Spring Cloud Function is a project with the following high-level goals:
+-
+
-
+
Promote the implementation of business logic via functions.
+
+ -
+
Decouple the development lifecycle of business logic from any specific runtime target so that the same code can run as a web endpoint, a stream processor, or a task.
+
+ -
+
Support a uniform programming model across serverless providers, as well as the ability to run standalone (locally or in a PaaS).
+
+ -
+
Enable Spring Boot features (auto-configuration, dependency injection, metrics) on serverless providers.
+
+
It abstracts away all of the transport details and infrastructure, allowing the developer to keep all the familiar tools and processes, and focus firmly on business logic.
+Features
+Spring Cloud Function features:
+-
+
-
+
Wrappers for
+@Beansof typeFunction,Consumerand +Supplier, exposing them to the outside world as either HTTP +endpoints and/or message stream listeners/publishers with RabbitMQ, Kafka etc.
+ -
+
Compiling strings which are Java function bodies into bytecode, and +then turning them into
+@Beansthat can be wrapped as above.
+ -
+
Deploying a JAR file containing such an application context with an +isolated classloader, so that you can pack them together in a single +JVM.
+
+ -
+
Adapters for AWS Lambda, Microsoft Azure, Apache OpenWhisk and possibly other "serverless" service providers.
+
+
Here’s a complete, executable, testable Spring Boot application (implementing a simple string manipulation):
+@SpringBootApplication
+public class Application {
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+
+ @Bean
+ public Function<Flux<String>, Flux<String>> uppercase() {
+ return flux -> flux.map(value -> value.toUpperCase());
+ }
+}
+Sample Projects
+-
+
- + + +
- + + +
- + + +
- + + +
- + + +