Spring Boot 2.2.5 嚐鮮-使用SpringBoot-1

本節將深入探討Spring Boot的用法.其內容包括:

  • 構建系統
  • 自動配置(auto-configuration),以及
  • 如何運行你的應用程序.

此外,我們還會涵蓋Spring Boot最佳實踐.

儘管Spring Boot沒有什麼特殊之處,但遵從我們的建議會讓你的開發過程變得更輕鬆.

如果你還是Spring Boot新手,建議您在學習本節之前先閱讀入門指南.


1. 構建系統

強烈建議您選擇一個可支持依賴管理並能將工件(artifacts)發佈到“Maven中央”倉庫的構建系統.

我們建議您選用Maven或Gradle.

雖然Spring Boot也能與其它構建系統(如:Ant)一起工作,但對這些構建系統的支持並不是很好.

1.1. 依賴管理

每個Spring Boot版本都提供了受支持的一系列依賴列表.

但事實是:你不應該為構建配置中的依賴指定具體版本,因為Spring Boot會幫你完成版本管理.

當升級Spring Boot時,這些依賴會同步升級.

提示

若有特殊需要,你也可以指定依賴的具體版本來覆蓋Spring Boot的推薦版本.


精選列表包含可與Spring Boot一起使用的所有spring模塊以及完善的第三方包列表.

該列表是可與Maven和Gradle一起使用的標準依賴清單(spring-boot-dependencies)。

提示

每個Spring Boot版本都與特定版本的Spring Framework強關聯.因此,強烈建議您不要指定具體版本.

1.2. Maven

Maven用戶可繼承spring-boot-starter-parent項目來使用合理的默認設置.

parent項目提供如下功能:

  • 將Java 1.8 作為默認編譯級別
  • 源碼採用UTF-8編碼
  • 從spring-boot-dependencies pom繼承的依賴管理部分可管理公共依賴的版本. 當在自己的POM中使用時,你可以省略依賴的<version>標籤./<version>
  • 帶有repackage execution id的repackage goal execution
  • 合理的資源過濾.
  • 合理的插件配置(exec plugin, Git commit ID, and shade).
  • 可對application.properties和application.yml進行合理的資源過濾,還可過濾特定配置文件(如:過濾application-dev.properties和application-dev.yml文件)

注意

由於application.properties和application.yml文件都可接受Spring形式的佔位符(${…​}), 為了不起衝突,Maven過濾將使用@..@形式的佔位符(可設置resource.delimiter Maven屬性來覆蓋該行為)

1.2.1. 繼承Starter Parent

要讓項目繼承spring-boot-starter-parent,需要像下面一樣設置parent:

<parent> /<parent>

<groupid>org.springframework.boot/<groupid>

<artifactid>spring-boot-starter-parent/<artifactid>

<version>2.2.5.RELEASE/<version>

提示

你只需要在該依賴上設置Spring Boog版本即可,在導入其它starters時,可以完全省略版本號.


在你的項目中,你也可以通過覆蓋特定屬性來重設依賴版本.

例如:要升級Spring Data版本,你可以將如下內容添加到你的pom.xml中:

<properties> /<properties>

<spring-data-releasetrain.version>Fowler-SR2/<spring-data-releasetrain.version>

提示

查看spring-boot-dependencies pom(https://github.com/spring-projects/spring-boot/blob/v2.2.5.RELEASE/spring-boot-project/spring-boot-dependencies/pom.xml)

來了解所有受支持的屬性.

1.2.2. 在不繼承Parent POM的情況下使用Spring Boot

並非每個人都喜歡繼承spring-boot-starter-parent POM.

例如:可能你公司存在一套自己的標準parent,或者你想明確地顯示聲明所有Maven配置.

在不使用spring-boot-starter-parent的情況下,也可通過scope=import來享受依賴管理所帶來的好處:

<dependencymanagement> /<dependencymanagement>

<dependencies> /<dependencies>

<dependency> /<dependency>

<groupid>org.springframework.boot/<groupid>

<artifactid>spring-boot-dependencies/<artifactid>

<version>2.2.5.RELEASE/<version>

<type>pom/<type>

<scope>import/<scope>

注意

上述配置無法通過屬性來覆蓋各個依賴.

要實現覆蓋效果,你必須在spring-boot-dependencies之前添加具體的依賴項.

例如,要升級spring-data-releasetrain版本,可在spring-boot-dependencies之前添加如下依賴:

<dependencymanagement> /<dependencymanagement>

<dependencies> /<dependencies>

<dependency> /<dependency>

<groupid>org.springframework.data/<groupid>

<artifactid>spring-data-releasetrain/<artifactid>

<version>Fowler-SR2/<version>

<type>pom/<type>

<scope>import/<scope>

<dependency> /<dependency>

<groupid>org.springframework.boot/<groupid>

<artifactid>spring-boot-dependencies/<artifactid>

<version>2.2.5.RELEASE/<version>

<type>pom/<type>

<scope>import/<scope>

提示

在上面的例子中,雖然我們指定的是BOM,但也可使用同樣方法來覆蓋所有依賴類型.

1.2.3. 使用Spring Boot Maven Plugin

Spring Boot提供了一個Maven plugin來將項目打包成可執行jar.

將其加到<plugins>部分就可使用,如下所示:/<plugins>

<build> /<build>

<plugins> /<plugins>

<plugin> /<plugin>

<groupid>org.springframework.boot/<groupid>

<artifactid>spring-boot-maven-plugin/<artifactid>

提示

在繼承了Spring Boot starter parent pom的情況下,只添加該plugin就夠了.

不需要配置,除非你想修改parent中定義的相關設置.

1.3. Gradle

要了解如何配套使用Spring Boot和Gradle,可參考Spring Boot的Gradle plugin文檔:

  • Reference (HTML and PDF)
  • API

1.4. Ant

可以使用Apache Ant+Ivy來構建Spring Boot project.

spring-boot-antlib “AntLib”模塊可幫助Ant來創建可執行jar.

要聲明依賴,可像下面一樣定義一個typical ivy.xml文件:

<ivy-module> /<ivy-module>

<info>

<configurations> /<configurations>

<conf>

<conf>

<dependencies> /<dependencies>

<dependency>

下面是典型的build.xml示例:

<project> /<project>

<property>

<target> /<target>

<retrieve>

<target> /<target>

<path> /<path>

<fileset>

<target> /<target>

<mkdir>

<target> /<target>

<javac>

<target> /<target>

<exejar> /<exejar>

<fileset>

提示

如不想使用spring-boot-antlib 模塊,則可參考howto.html “How-to” .


分享到:


相關文章: