Spring Boot入門

一、簡介

使用 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