javascript
SpringBoot项目属性配置
我們知道,在項目中,很多時候需要用到一些配置的東西,這些東西可能在測試環(huán)境和生產(chǎn)環(huán)境下會有不同的配置,后面也有可能會做修改,所以我們不能在代碼中寫死,要寫到配置中。我們可以把這些內(nèi)容寫到application.yml文件中。
舉個例子,在微服務(wù)架構(gòu)中,某個服務(wù)經(jīng)常會調(diào)用其他服務(wù)來獲取相關(guān)信息,那么需要配置其他服務(wù)的地址,我們可以做如下配置:
server:port:?8001#?配置多個微服務(wù)的地址 url:#?訂單微服務(wù)的地址orderUrl:?http://localhost:8002#?用戶微服務(wù)的地址userUrl:?http://localhost:8003#?購物車微服務(wù)的地址shoppingUrl:?http://localhost:8004然后在代碼中如何獲取到這些配置內(nèi)容呢?我們在屬性上使用@Value注解即可獲取到,如下:
import?org.slf4j.Logger; import?org.slf4j.LoggerFactory; import?org.springframework.beans.factory.annotation.Value; import?org.springframework.web.bind.annotation.RequestMapping; import?org.springframework.web.bind.annotation.RestController;@RestController @RequestMapping("/test") public?class?TestController?{private?static?final?Logger?LOGGER?=?LoggerFactory.getLogger(TestController.class);@Value("${url.orderUrl}")private?String?orderUrl;@Value("${url.userUrl}")private?String?userUrl;@Value("${url.shoppingUrl}")private?String?shoppingUrl;@RequestMapping("/config")public?String?testConfig()?{LOGGER.info("=====獲取的訂單服務(wù)地址為:{}",?orderUrl);LOGGER.info("=====獲取的用戶服務(wù)地址為:{}",?userUrl);LOGGER.info("=====獲取的購物車服務(wù)地址為:{}",?shoppingUrl);return?"success";} }很簡單,請求一下該8001端口的服務(wù)后,可以看到控制臺會打印出三個服務(wù)的地址,在實際項目中也是這么用的,后面如果因為服務(wù)器部署的原因,需要修改某個服務(wù)的地址,那么只要在配置文件中修改即可。
這里再引申一個問題,隨著業(yè)務(wù)復(fù)雜度的增加,一個項目中可能會有越來越多的微服務(wù),那么代碼中,如果這樣一個個去使用@Value注解引入的話,太繁瑣,也不科學(xué)。所以可以考慮封裝一個配置類。
/***?@author?shengwu?ni*?@date?2018/06/11*/ @Component @ConfigurationProperties(prefix?=?"url") public?class?MicroServiceUrl?{private?String?orderUrl;private?String?userUrl;private?String?shoppingUrl;//?省去get和set方法 }使用@ConfigurationProperties注解可以指定一個前綴,然后該類中的屬性名就是配置中去掉前綴后的名字,一一對應(yīng)即可。同時,該類上面需要加上@Component注解,作為組件放到Spring容器中。對了,使用@ConfigurationProperties需要導(dǎo)入一個依賴:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional> </dependency>
OK,再寫個Controller來測試一下,此時,不需要再一個個引入了,直接通過@Resource注解將剛剛的配置類注入進(jìn)來即可使用了,非常方便。如下:
關(guān)注小編
可獲得兩大新人禮包
36份一線互聯(lián)網(wǎng)Java面試電子書
84個Java稀缺面試題視頻
地址:http://yunxi.ai/java/java.html
轉(zhuǎn)載于:https://blog.51cto.com/13672983/2128157
總結(jié)
以上是生活随笔為你收集整理的SpringBoot项目属性配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到许多小猫咪是什么意思
- 下一篇: SpringBoot环境切换