47 lines
3.0 KiB
Plaintext
47 lines
3.0 KiB
Plaintext
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:
|
|
|
|
* _Choice of programming styles - reactive, imperative or hybrid._
|
|
* _Function composition and adaptation (e.g., composing imperative functions with reactive)._
|
|
* _Support for reactive function with multiple inputs and outputs allowing merging, joining and other complex streaming operation to be handled by functions._
|
|
* _Transparent type conversion of inputs and outputs._
|
|
* _Packaging functions for deployments, specific to the target platform (e.g., Project Riff, AWS Lambda and more)_
|
|
* _Adapters to expose function to the outside world as HTTP endpoints etc._
|
|
* _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 https://github.com/spring-cloud/spring-cloud-function/tree/master/spring-cloud-function-adapters/spring-cloud-function-adapter-aws[AWS Lambda], https://github.com/spring-cloud/spring-cloud-function/tree/master/spring-cloud-function-adapters/spring-cloud-function-adapter-azure[Microsoft Azure], https://github.com/spring-cloud/spring-cloud-function/tree/master/spring-cloud-function-adapters/spring-cloud-function-adapter-gcp[Google Cloud Functions], and possibly other "serverless" service providers._
|
|
|
|
Here's a complete, executable, testable Spring Boot application (implementing a simple string manipulation):
|
|
|
|
```java
|
|
@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
|
|
|
|
* https://github.com/spring-cloud/spring-cloud-function/blob/master/spring-cloud-function-samples/function-sample[Vanilla]
|
|
* https://github.com/spring-cloud/spring-cloud-function/blob/master/spring-cloud-function-samples/function-sample-pof[Plain Old Function]
|
|
* https://github.com/spring-cloud/spring-cloud-function/tree/master/spring-cloud-function-samples/function-sample-aws[AWS Lambda]
|
|
* https://github.com/spring-cloud/spring-cloud-function/tree/master/spring-cloud-function-samples/function-sample-azure[Microsoft Azure]
|
|
* https://github.com/spring-cloud/spring-cloud-function/tree/master/spring-cloud-function-samples/function-sample-gcp-http[Google Cloud Functions]
|
|
|
|
|