103. 简介

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.utilFlux是来自项目反应堆Reactive Streams Publisher。可以通过 HTTP 或消息传递访问 function。

Spring Cloud Function 有 4 个主要 features:

  • @BeansConsumerSupplier类型的@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 和问题跟踪器。