func/docs/function-templates/springboot.md

89 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Spring Boot Function Developer's Guide
When creating a Spring Boot function using the `func` CLI, the project
directory looks like a typical Boot project.
To create a HTTP function that echos the input run the following command:
```
func create -l springboot fn
```
This is the HTTP function template structure:
```
Project path: /home/developer/projects/fn
Function name: fn
Language Runtime: springboot
Template: http
tree
fn
├── func.yaml
├── mvnw
├── mvnw.cmd
├── pom.xml
├── README.md
└── src
├── main
│   ├── java
│   │   └── functions
│   │   └── CloudFunctionApplication.java
│   └── resources
│   └── application.properties
└── test
└── java
└── functions
└── EchoCaseFunctionTest.java
```
This is a full-featured, self-contained Spring Boot application that uses [Spring Cloud Function](https://spring.io/projects/spring-cloud-function) and [Spring WebFlux](https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html) web framework to listen for HTTP requests on port 8080.
See the generated [README.md](../../templates/springboot/http/README.md) for
details on building, testing, and deploying the HTTP app.
You may have noticed the `func.yaml` file. This is a configuration
file used by `func` to deploy your project as a service in your
kubernetes cluster.
For an event-triggered function, pass the `-t cloudevents` option to
generate an app capable of responding to
[CloudEvents](https://cloudevents.io):
```
func create -l springboot -t cloudevents fn
```
A CloudEvent function have a similar template structure to the above HTTP function:
```
Project path: /home/developer/projects/fn
Function name: fn
Language Runtime: springboot
Template: cloudevents
tree
fn
├── func.yaml
├── mvnw
├── mvnw.cmd
├── pom.xml
├── README.md
└── src
├── main
│   ├── java
│   │   └── echo
│   │   ├── EchoFunction.java
│   │   └── SpringCloudEventsApplication.java
│   └── resources
│   └── application.properties
└── test
└── java
└── echo
└── SpringCloudEventsApplicationTests.java
```
The handlers of each app differ slightly. See its generated
[README.md](../../templates/springboot/cloudevents/README.md) for more details.
Have fun!