123. 简介
Spring Cloud Function 是一个具有以下 high-level 目标的项目:
-
通过函数促进业务逻辑的实现。
-
将业务逻辑的开发生命周期与任何特定的运行时目标分离,以便相同的 code 可以作为 web 端点,流处理器或任务运行。
-
支持无服务器提供商之间的统一编程模型,以及 run 独立(本地或 PaaS)的能力。
-
在无服务器提供程序上启用 Spring Boot features(auto-configuration,依赖注入,metrics)。
它抽象出所有传输细节和基础架构,允许开发人员保留所有熟悉的工具和流程,并专注于业务逻辑。
这是一个完整的,可执行的,可测试的 Spring Boot application(实现一个简单的 string 操作):
@SpringBootApplication
public class Application {
@Bean
public Function<Flux<String>, Flux<String>> uppercase() {
return flux -> flux.map(value -> value.toUpperCase());
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
它只是一个 Spring Boot application,所以它可以在本地和 CI build 中构建,运行和测试,就像任何其他 Spring Boot application 一样。 Function
来自java.util
,Flux
是来自项目反应堆的Reactive Streams Publisher
。可以通过 HTTP 或消息传递访问 function。
Spring Cloud Function 有 4 个主要 features:
-
@Beans
,Consumer
和Supplier
类型的@Beans
的包装,将它们作为 HTTP endpoints and/or 消息流 listeners/publishers 暴露给外部世界,使用 RabbitMQ,Kafka 等。 -
将作为 Java function 体的 strings 编译为字节码,然后将它们转换为可以如上所述进行包装的
@Beans
。 -
使用隔离的类加载器部署包含此类 application context 的 JAR 文件,以便可以将它们打包在一个 JVM 中。
-
适用于AWS Lambda,天蓝,Apache OpenWhisk和其他“无服务器”服务提供商的适配器。
Spring Cloud 在 non-restrictive Apache 2.0 license 下发布。如果您想为文档的这一部分做出贡献,或者如果您发现错误,请在github 上找到项目中的 source code 和问题跟踪器。