124. Introduction

Spring Cloud Function 是一个具有以下高级目标的项目:

  • 通过功能促进业务逻辑的实现。

  • 将业务逻辑的开发生命周期与任何特定的运行时目标脱钩,以便可以将相同的代码作为 Web 终结点,流处理器或任务来运行。

  • 支持跨无服务器提供程序的统一编程模型,以及独立运行(本地或在 PaaS 中)的能力。

  • 在无服务器提供程序上启用 Spring Boot 功能(自动配置,依赖项注入,Metrics)。

它抽象出所有传输细节和基础结构,使开发人员可以保留所有熟悉的工具和流程,并专注于业务逻辑。

这是一个完整的,可执行的,可测试的 Spring Boot 应用程序(实现简单的字符串操作):

@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 应用程序,因此可以像其他任何 Spring Boot 应用程序一样在本地以 CI 构建,构建,运行和测试。 Function来自java.utilFluxReactive Streams Publisher来自Project Reactor。可以通过 HTTP 或消息传递来访问该功能。

Spring Cloud Function 具有 4 个主要功能:

  • @Beans类型FunctionConsumerSupplier的包装器,将它们作为 HTTP 端点和/或具有 RabbitMQ,Kafka 等的消息流侦听器/发布器暴露给外界。

  • 将作为 Java 函数体的字符串编译为字节码,然后将它们转换为@Beans,可以如上所述进行包装。

  • 使用隔离的类装入器部署包含此类应用程序上下文的 JAR 文件,以便可以将它们打包在一起在单个 JVM 中。

  • AWS LambdaAzureApache OpenWhisk以及其他“无服务器”服务提供者的适配器。

Note

Spring Cloud 是根据非限制性 Apache 2.0 许可发布的。如果您想为文档的这一部分做出贡献或发现错误,请在项目github处找到源代码并发布跟踪程序。