? ? ? ?本節(jié)將更詳細地介紹如何使用Spring Boot。它涵蓋了構(gòu)建系統(tǒng),自動配置以及如何運行應(yīng)用程序等主題。并且會提供一些建議,如果遵循這些建議,將使開發(fā)過程變得更容易一些。
? ? ? ?如果您剛剛開始使用Spring Boot,則可能需要先閱讀之前有關(guān)Spring Boot相關(guān)的文章,然后再深入本節(jié)。
一、建立系統(tǒng)
? ? ? ?強烈建議您選擇支持依賴管理的構(gòu)建系統(tǒng),并且可以使用發(fā)布到“Maven Central”存儲庫的工件。我們建議您選擇Maven或Gradle。Spring Boot可以與其他構(gòu)建系統(tǒng)(例如Ant)一起工作,但是它們不會得到特別好的支持。
1.1?依賴管理
? ? ? Spring Boot的每個發(fā)行版都提供了一個支持的依賴列表。在實踐中,您不需要為構(gòu)建配置中的任何這些依賴項提供一個版本,因為Spring Boot正在為您進行管理。當您升級Spring Boot本身時,這些依賴關(guān)系也將以一致的方式升級。
? ? ? 如果您覺得有必要,您仍然可以指定一個版本并覆蓋Spring Boot自動默認的版本。
? ? ? Spring Boot的默認列表包含您可以使用Spring Boot的所有Spring模塊以及第三方庫的精煉列表。該列表可作為標準物料清單(spring-boot-dependencies)提供,并且還提供Maven和Gradle的其他專用支持。
? ? ? ?注意:Spring Boot的每個版本都與Spring Framework的基礎(chǔ)版本相關(guān)聯(lián),因此我們強烈建議您不要自行指定其版本。
1.2 Maven進行項目構(gòu)建
? ? ? ?Maven用戶可以從spring-boot-starter-parent項目繼承,以獲得合理的默認值。父項目提供以下功能:
? ? ? ?· Java 1.6作為默認的編譯器級別
????? ?·?UTF-8源碼編碼
????? ?·?依賴管理部分,允許您省略繼承自Spring-Boot-dependencies POM的通用依賴項的
????? ?·?明智的資源過濾
????? ?·?明智的插件配置(exec插件,surefire,Git提交ID,shade)
? ? ? ?·? 對application.properties和application.yml進行明智的資源過濾,包括特定于配置文件的文件(例如application-foo.properties和application-foo.yml)
? ? ? ?注意:由于application.properties和application.yml配置文件接受Spring樣式占位符($ {...}),Maven過濾被改為使用@ .. @占位符(您可以用Maven屬性resource.delimiter覆蓋)
1.2.1?繼承初始父項
? ? ? 要將項目配置為從spring-boot-starter-parent繼承,只需設(shè)置父項,具體代碼如下:
? ? ? ?說明:上述的父級項目依賴其實可以再創(chuàng)建項目的時候就可以指定,即在IDE工具中進行創(chuàng)建即可。
? ? ? ?您應(yīng)該只需要在此依賴項上指定Spring Boot版本號。如果您導入更多的啟動器,則可以安全地省略版本號。
? ? ? ? 通過該設(shè)置,您還可以通過在自己的項目中重寫屬性來覆蓋各個依賴項。例如,要升級到另一個Spring Data發(fā)行版,您需要將以下內(nèi)容添加到您的pom.xml中。具體代碼如下:
????????
?????????
????????
1.2.2?使用沒有父POM的Spring Boot
? ? ? ? 不是每個人都喜歡從spring-boot-starter-parent POM繼承。你可能有你自己的企業(yè)標準的POM結(jié)構(gòu),你需要使用,或者你可能只是喜歡顯式聲明所有的Maven配置。
? ? ? ? 如果您不想使用spring-boot-starter-parent,則仍然可以通過使用scope = import dependency來保留依賴關(guān)系管理的好處(但不是插件管理):
????????
????????? ? ?
????????? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ?
????????? ?
????????
? ? ? ? 如上所述,該設(shè)置不允許您使用屬性覆蓋單個依賴項。為了達到同樣的結(jié)果,你需要在spring-boot-dependencies條目之前在項目的dependencyManagement中添加一個條目。?
? ? ? ? 如果在不使用父級POM依賴的項目中添加對應(yīng)的依賴包時,你可以這樣設(shè)置:
????????
????????? ?
????????? ? ? ?
????????? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ?
????????? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ?
????????? ?
????????
? ? ? ? 在上面的例子中,我們指定了一個BOM,但是任何依賴類型都可以被覆蓋。
1.2.3?更改Java版本
? ? ? ?spring-boot-starter-parent選擇相當保守的Java兼容性。 如果您想遵循我們的建議并使用較新的Java版本,則可以添加一個java.version屬性:
????????
????????? ?
????????
1.2.4?使用Spring Boot Maven插件
? ? ? ?Spring Boot包含一個Maven插件,可以將項目打包為可執(zhí)行的jar文件。如果你想使用它,請將插件添加到
????????
????????? ?
????????? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ? ? ?
????????? ? ? ?
????????? ?
????????
? ? ? ? 如果你使用Spring Boot的啟動父POM,你只需要添加插件,除非你想改變在父代中定義的設(shè)置,否則不需要進行配置。
二、構(gòu)建您的代碼
? ? ? Spring Boot不需要任何特定的代碼布局,但是,有一些最佳實踐可以幫助到你,并且可以讓團隊的合作變的比較緊密。
2.1?依賴管理(包和類的管理)
? ? ? ?當一個類不包含包聲明時,它被認為是在“默認包”中。通常不鼓勵使用“默認軟件包”,應(yīng)該避免使用“默認軟件包”。對于使用@ComponentScan,@EntityScan或@SpringBootApplication注釋的Spring Boot應(yīng)用程序來說,這可能會導致特定的問題,因為每個jar的每個類都將被讀取。
? ? ? ?我們建議您遵循Java推薦的軟件包命名約定,并使用反向域名(例如,com.example.project)。
2.2?定位主應(yīng)用程序類
? ? ? ? 我們通常建議您將主應(yīng)用程序類放在其他類的根包中。@EnableAutoConfiguration注釋通常放在主類上,它隱式地為某些項目定義了一個基本的“搜索包”。例如,如果您正在編寫JPA應(yīng)用程序,則@EnableAutoConfiguration注釋類的包將用于搜索@Entity項目。
? ? ? ?使用根包也允許使用@ComponentScan注釋而不需要指定basePackage屬性。如果您的主類位于根包中,也可以使用注釋。
Application.java文件將聲明main方法以及基本的@Configuration。
????package com.example.myproject;
????
????import org.springframework.boot.SpringApplication;
????import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
????import org.springframework.context.annotation.ComponentScan;
????import org.springframework.context.annotation.Configuration;
????
????@Configuration
????@EnableAutoConfiguration
????@ComponentScan
????public class Application {
????
????? ? public static void main(String[] args) {
????? ? ? ? SpringApplication.run(Application.class, args);
????? ? }
????
????}
? ? 到這里Spring Boot依賴和構(gòu)建代碼的建議頁大致說完了,后面我還會具體進行闡述。





暫無評論,快來評論吧!