精進 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三種方式讀取配置文件

精進 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三種方式讀取配置文件web

內容簡介:本文介紹 Spring Boot 的配置文件和配置管理,以及介紹了三種讀取配置文件的方式,並進行代碼演示。spring

在 Spring Boot 出現以前,一個 Spring 項目廣泛會存在不少個配置文件,例若有配置與 web 服務器相關信息的 web.xml,有配置 Spring 自己的各類 application-xxx.xml,一份 xxx 對應 Sping 的一個功能模塊,例如 MVC 和 Data Source,還有第三方插件 如 log4j 等配置文件。此外,應用程序自己也可能存在多個配置文件,剛去數這些配置文件的數目都讓人感受暈腦殼,更別說去管理和配置它們了。瀏覽器

Spring Boot 技術的到來,大大地簡化了這些配置文件的管理和讀取。對於 Spring.配置信息,它所支持的第三方框架的配置信息,應用自定義的配置信息,統統都整合了在一個application.properties 文件中,過去可能存在近10個的配置文件,現在只須要一個便可。不用再像之前那樣,配置信息散落在應用的不一樣配置文件。這顯然大大的簡化了配置信息的管理工做,固然也相應地減小了出錯的機率。緩存

一、Web 服務器的配置

Spring Boot 啓動的默認 web 服務器是 Tomcat,而端口爲 8080,上下文是「/」。對於這些默認設置,咱們均可以在 appication.properties 中從新配置。tomcat

咱們如今在 appication.properties 中添加兩行代碼服務器

server.port=9090
server.servlet.context-path=/home`

image

按快捷鍵 Shift + F10 運行程序,輸入原先的 網址 http://localhost:8080/hello
發現找不到服務器。緣由是咱們已經利用上面兩行代碼修改的 Tomcat 的端口號和應用的上下文。咱們輸入如下網址就能夠看到結果了。app

http://localhost:9090/home/hello框架

image

二、用 Undertow 替換默認的 Tomcat 服務器

Spring Boot 默認內置的 web 服務器是 Tomcat。事實上,它支持三種嵌套的 web 服務器,另外兩種是 Jetty 和 Undertow,而 Undertow 性能最優,能夠將它設置爲 web 服務器,取代另外兩種。spring-boot

Spring Boot 的 spring-boot-starter-web 默認嵌套了 Tomcat。當咱們更換爲其它 web 服務器時,如更換爲 Undertow,須要把 Tomcat 給屏蔽掉。同時,還須要引進相應 web 服務器對應的 starter。性能

如今咱們嘗試把 web 服務器切換爲 Undertow,像下面那樣修改 pom.xml

image

網上所查到的切換 web 服務器方案大多如上,可是在 IDEA 中編譯運行程序,它老是
頑固地使用 Tomcat,而不啓用 Undertow。這時候有足夠理由懷疑這是 IDEA 的緩存問題所形成的,須要像下面這樣刷新一下 IDEA 的 Maven 項目。

image

刷新 Maven 項目後,而後再使用 Maven 來編譯一下程序,像下圖那樣雙擊 install。

image

編譯完以後,按快捷鍵 Shift + F10 運行程序,此時能夠看見日誌輸出顯示 Undertow 已經成功啓動了。

image

三、讀取 Spring Boot 的配置

能夠在應用中讀取 application.properties 的配置文件,並獲取其中配置信息,以供應用程序使用。事實上 Spring Boot 提供了三種方式來讀取配置文件。
第 1 種方法是經過 Environment 類 的 getPropery() 方法讀取。
第 2 種方法是經過 @Value 註解來自動注入屬性值。
第 3 種方法是將一組屬性自動注入到一個配置類中。

咱們先在 application.properties 中加入以下四行配置,而後分別用三種方法來讀取。

app.message1=Hi, Felix!
app.message2=You are really an IT expert.
app.num1=4
app.num2=5

如今修改 HelloWorld 的 sayHello 方法,使用 @Value 註解的方法讀取 app.message1,用 Enviornment.getProperty() 讀取 app.message2,用 @Autowired 把Environment 注入進來,就能夠調用它的 getProperty() 方法了。代碼以下:

image

啓動程序後,成功用兩種方式讀出配置文件的數據,在瀏覽器的輸出結果以下:

image

第 3 種讀取配置文件的方法是將一組屬性自動注入到一個配置類中,這時須要藉助註解 @ConfigurationProperties 和 @Configuration,咱們用這種方式讀取 app.num1 和 app.num2 的值,並對它們求和,而後輸出結果。仍是上代碼。

image

AppConfig 類使用了兩個註解 @ConfigurationProperties 和 @Configuration,在 @ConfigurationProperties 中輸入了參數 「app」,它是屬性 app.num1 和 app.num2 的前綴,從如下代碼能夠看出 AppConfig 就是一個普通的 POJO 文件,只不過是加上了註解。

接下來再看如何使用 AppConfig 這個類。如今咱們新建一個求和的控制器 SumController,使用註解 @Autowired 把 AppConfig 自動注入進來,就可使用了,是否是很方便、很簡單。

image

按 Shift + F10 啓動程序,輸入 Sum 方法對應的 url http://localhost:9090/home/sum,便可看到結果。

image

好了,飛仙時空寫的第三篇 Spring Boot 到此結束,歡迎轉發和關注。

Enjoy coding.

相關文章
相關標籤/搜索