一、簡介
使用 Spring Boot 可以很容易地建立出能直接執行的獨立的、生產級別的基於 Spring 的應用。我們對 Spring 平臺和第三方類庫有自己的考慮,因此您可以從最基本的開始。大多數 Spring Boot 應用只需要很少的 Spring 配置。
您可以使用 Spring Boot 來建立一個可以使用 java -jar 命令來執行或者基於傳統的 war 包部署的應用程式。我們還提供了一個用於執行 spring scripts 的命令列工具。
我們的主要目標是:
- 為所有 Spring Boot 開發提供一個更快、更全面的入門體驗。
- 堅持自我雖好,但當需求出現偏離,您需要能迅速擺脫出來。
- 提供大量非功能性特性相關專案(例如:內嵌伺服器、安全、指標、健康檢查、外部配置)。
- 絕對沒有程式碼生成,也不要求 XML 配置。
二、建立可執行 jar
要建立可執行 jar,我們需要將 spring-boot-maven-plugin 新增到 pom.xml 檔案中。在 dependencies 下方插入以下配置:
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
三、使用Spring Boot
3.1 Maven
Maven 使用者可以繼承 spring-boot-starter-parent 專案以獲取合適的預設值,父專案提供了以下功能:
- Java 1.8 作為預設編譯器級別。
- 原始碼使用 UTF-8 編碼。
- 依賴管理部分繼承自 spring-boot-dependencies 的 POM,允許您省略常見依賴的
標籤。 - 合理的資源過濾。
- 合適的外掛配置(exec plugin、Git commit ID、shade)。
- 針對 application.properties 和 application.yml 資源的合理過濾,包括特定 profile 的檔案(例如 application-foo.properties 和 application-foo.yml)
3.1.1 繼承Starter Parent
要將專案配置繼承 spring-boot-starter-parent,只需要按以下方式設定 parent:
<!-- 從 Spring Boot 繼承預設配置 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
3.2、Starter
Starter 是一組慣例依賴描述資源,可以包含在應用中。從 starter 中,您可以獲得所需的所有 Spring 和相關技術的一站式支援,無須通過示例程式碼和複製貼上來獲取依賴。比如,如果您要使用 Spring 和 JPA 進行資料庫訪問,那麼只需要在專案中包含 spring-boot-starter-data-jpa 依賴項即可。
Spring Boot 在 org.springframework.boot group 下提供了以下應用 starter:
3.2.1 Spring Boot 應用類 Starter
名稱 | 描述 |
---|---|
spring-boot-starter | 核心 starter,包含自動配置支援、日誌和 YAML |
spring-boot-starter-activemq | 提供 JMS 訊息支援,使用 Apache ActiveMQ |
spring-boot-starter-amqp | 提供 Spring AMQP 與 Rabbit MQ 支援 |
spring-boot-starter-aop | 提供 Spring AOP 與 AspectJ 面向切面程式設計支援 |
spring-boot-starter-artemis | 提供 JMS 訊息服務支援,使用 Apache Artemis |
spring-boot-starter-batch | 提供 Spring Batch 支援 |
spring-boot-starter-cache | 提供 Spring Framework 快取支援 |
spring-boot-starter-cloud-connectors | 使用 Spring Cloud Connectors 簡單連線到類似 Cloud Foundry 和 Heroku 等雲平臺 |
spring-boot-starter-data-cassandra | 提供對 Cassandra 分散式資料庫和 Spring Data Cassandra 的支援 |
spring-boot-starter-data-cassandra-reactive | 提供對 Cassandra 分散式資料庫和 Spring Data Cassandra Reactive 的支援 |
spring-boot-starter-data-couchbase | 提供對 Couchbase 面向文件資料庫和 Spring Data Couchbase 的支援 |
pring-boot-starter-data-couchbase-reactive | 提供對 Couchbase 面向文件資料庫和 Spring Data Couchbase Reactive 的支援 |
spring-boot-starter-data-elasticsearch | 提供對 Elasticseach 搜尋與分析引擎和 Spring Data Elasticsearch 的支援 |
spring-boot-starter-data-jpa | 供 Spring Data JPA 與 Hibernate 的支援 |
spring-boot-starter-data-mongodb | 提供對 MongoDB 面向文件資料庫和 Spring Data MongoDB 的支援 |
spring-boot-starter-data-mongodb-reactive | 提供對 MongoDB 面向文件資料庫和 Spring Data MongoDB Reactive 的支援 |
spring-boot-starter-data-neo4j | 提供對 Neo4j 圖資料庫與 SPring Data Neo4j 的支援 |
spring-boot-starter-data-redis | 提供對 Redis 鍵值資料儲存、Spring Data Redis 和 Lettuce 客戶端的支援 |
spring-boot-starter-data-redis-reactive | 提供對 Redis 鍵值資料儲存、Spring Data Redis Reactive 和 Lettuce 客戶端的支援 |
spring-boot-starter-data-rest | 提供使用 Spring Data REST 通過 REST 暴露 Spring Data 資源庫的支援 |
spring-boot-starter-freemarker | 提供使用 Freemakrer 檢視構建 MVC web 應用的支援 |
spring-boot-starter-jdbc | 提供 JDBC 與 Tomcat JDBC 連線池的支援 |
spring-boot-starter-json | 提供了讀寫 json 的支援 |
spring-boot-starter-mail | 提供使用 Java Mail 與 Spring Framework 的郵件傳送支援 |
spring-boot-starter-security | Spring Security 支援 |
spring-boot-starter-test | 供包含了 JUnit、Hamcrest 與 Mockito 類庫的 Spring Boot 單元測試支援 |
spring-boot-starter-thymeleaf | 提供使用 Thymeleaf 檢視構建 MVC web 應用的支援 |
spring-boot-starter-validation | 提供 Hibernate Validator 與 Java Bean Validation 的支援 |
spring-boot-starter-web | 提供使用 Spring MVC 構建 web(包含 RESTful)應用的支援,使用 Tomcat 作為預設嵌入式容器 |
spring-boot-starter-web-services | Spring Web Services 支援 |
spring-boot-starter-webflux | 提供使用 Spring Framework 的 Reactive Web 支援構建 WebFlux 應用的支援 |
spring-boot-starter-websocket | 提供使用 Spring Framework 的 WebSocket 支援構建 WebSocket 應用的支援 |
3.2.2 Spring Boot技術類 starter
名稱 | 描述 |
---|---|
spring-boot-starter-jetty | 使用 Jetty 作為嵌入式 servlet 容器。可代替 spring-boot-starter-tomcat |
spring-boot-starter-log4j2 | 使用 Log4j2 作為日誌元件。可代替 spring-boot-starter-logging |
spring-boot-starter-logging | 使用 Logback 作為日誌元件,此 starter 為預設的日誌 starter |
spring-boot-starter-reactor-netty | 使用 Reactor Netty 作為內嵌響應式 HTTP 伺服器 |
spring-boot-starter-tomcat | 使用 Tomcat 作為嵌入式 servlet 容器,此為 spring-boot-starter-web 預設的 servlet 容器 starter |
spring-boot-starter-undertow | 使用 Undertow 作為嵌入式 servlet 容器,可代替 spring-boot-starter-tomcat |