javascript
dev项目属性按钮是灰色_Spring Boot 中的项目属性配置
閱讀本文約需要5分鐘
大家好,我是你們的導師,我每天都會在這里給大家分享一些干貨內容(當然了,周末也要允許老師休息一下哈)。上次老師跟大家分享了Spring Boot 如何使用 SLF4J 進行日志記錄,今天跟大家分享一下 Spring Boot 中的項目屬性配置。
我們知道,在項目中,很多時候需要用到一些配置信息,這些信息在測試環境和生產環境下可能會有不同的配置,后面根據實際業務情況有可能還需要再做修改。
針對這種情況,我們不能將這些配置在代碼中寫死,最好是寫到配置文件中,比如可以把這些信息寫到 application.yml 文件中,本文就來講解在 Spring Boot 中項目屬性的配置過程。
1.?單一服務的配置和調用
舉個例子,在微服務架構中,最常見的就是某個服務需要調用其他服務來獲取其提供的相關信息,那么在該服務的配置文件中需要配置被調用服務的地址。比如在當前服務里,我們需要調用訂單微服務獲取訂單相關的信息,假設訂單服務的端口號是 8002,我們可以做如下配置:
那在業務代碼中,如何獲取到這個配置的訂單服務地址呢?我們可以使用 @Value 注解來解決。在對應的類中加上一個屬性,在屬性上使用 @Value 注解即可獲取到配置文件中的配置信息,如下:
@Value 注解上通過 ${key} 即可獲取配置文件中和 key 對應的 value 值。我們啟動項目,在瀏覽器中輸入:localhost:8080/test/config,請求服務后,可以看到控制臺打印出了訂單服務的地址。
=====獲取的訂單服務地址為:http://localhost:8002
這說明我們成功獲取到了配置文件中的訂單微服務地址,在實際項目中也是這樣使用的。后面如果因為服務器部署的原因,需要修改某個服務的地址,只要在配置文件中修改即可。
2.?多項服務的配置和調用
這里再引申一個問題,隨著業務復雜度的增加,一個項目中可能會有越來越多的微服務,某個模塊可能需要調用多個微服務獲取不同的信息,那么就需要在配置文件中配置多個微服務的地址。
可是,在需要調用這些微服務的代碼中,如果這樣一個個去使用 @Value 注解引入相應的微服務地址,太過于繁瑣,也不科學。所以,在實際項目中,遇到業務繁瑣、邏輯復雜的情況,需要考慮封裝一個或多個配置類。
舉個例子,假如在當前服務中,某個業務需要同時調用訂單微服務、用戶微服務和購物車微服務,分別獲取訂單、用戶和購物車相關信息,然后對這些信息做一定的邏輯處理。那么在配置文件中,我們需要將這些微服務的地址都配置好:
也許實際業務中,遠遠不止這三個微服務,甚至十幾個都有可能。對于這種情況,我們可以先定義一個 MicroServiceUrl 類來專門保存微服務的 URL,如下:
細心的朋友應該可以看到,使用 @ConfigurationProperties 注解并使用 prefix 指定一個前綴,那么該類中的屬性名就是配置中去掉前綴后的名字,一一對應即可,即前綴名 + 屬性名就是配置文件中定義的 key。同時,該類上面需要加上 @Component 注解,把該類作為組件放到 Spring 容器中,讓 Spring 去管理,我們使用的時候直接注入即可。
需要注意的是,使用 @ConfigurationProperties 注解需要導入它的依賴:
到此為止,我們將配置寫好了,接下來寫個 Controller 測試一下。此時,不需要在代碼中一個個引入這些微服務的 URL,直接通過 @Resource 注解將剛剛寫好的配置類注入進來即可使用了,非常方便。如下:
再次啟動項目,請求一下可以看到,控制臺打印出如下信息,說明配置文件生效,同時正確獲取配置文件內容:
3. 指定項目配置文件
我們知道,在實際項目中,一般有兩個環境:開發環境和生產環境。開發環境中的配置和生產環境中的配置往往不同,比如環境、端口、數據庫、相關地址,等等。我們不可能在開發環境調試好之后,部署到生產環境后,又要將配置信息全部修改成生產環境上的配置,這樣太麻煩,也不科學。
最好的解決方法就是針對開發環境和生產環境分別創建一套配置信息,當我們在開發時,指定讀取開發環境的配置,當我們將項目部署到服務器上之后,再指定去讀取生產環境的配置。
我們新建兩個配置文件:application-dev.yml 和 application-pro.yml,分別用來對開發環境和生產環境進行相關配置。這里為了方便,我們分別設置兩個訪問端口號,開發環境用 8001,生產環境用 8002。
然后在 application.yml 文件中指定讀取哪個配置文件即可。比如我們在開發環境下,指定讀取 applicationn-dev.yml 文件,如下:
這樣就可以在開發的時候,指定讀取 application-dev.yml 文件,訪問的時候使用 8001 端口;部署到服務器后,只需要將 application.yml 中指定的文件改成 application-pro.yml 即可,然后使用 8002 端口訪問,非常方便。
今天就分享到這,今日留言話題:Springboot項目屬性配置你們學會了嗎?對有價值的留言,我們都會一一回復的。如果覺得對你有一丟丟幫助,請點右下角【在看】,讓更多人看到該文章。
總結
以上是生活随笔為你收集整理的dev项目属性按钮是灰色_Spring Boot 中的项目属性配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python面试设计模式问题_聊聊 Py
- 下一篇: toad dba suite for o