springboot如何獲取application.yml里值的方法
在項目中,很多時候需要用到一些配置信息,這些信息在測試環(huán)境和生產(chǎn)環(huán)境下可能會有不同的配置,后面根據(jù)實(shí)際業(yè)務(wù)情況有可能還需要再做修改。我們不能將這些配置在代碼中寫死,最好是寫到配置文件中,比如可以把這些信息寫到 application.yml
文件中。
那么,怎么在代碼里獲取或者使用這個地址呢?有2個方法。
方法一:
我們可以通過@Value 注解的 ${key} 即可獲取配置文件(application.yml)中和 key 對應(yīng)的 value 值,這個方法適用于微服務(wù)比較少的情形
方法二:
在實(shí)際項目中,遇到業(yè)務(wù)繁瑣,邏輯復(fù)雜的情況,需要考慮封裝一個或多個配置類。例如,假如在當(dāng)前服務(wù)中,某個業(yè)務(wù)需要同時調(diào)用微服務(wù)1、微服務(wù)2和微服務(wù)3。
如果這樣一個個去使用 @Value 注解引入相應(yīng)的微服務(wù)地址的話,太過于繁瑣。
也許實(shí)際業(yè)務(wù)中,遠(yuǎn)遠(yuǎn)不止這三個微服務(wù),甚至十幾個都有可能。對于這種情況,我們可以先定義一個 MicroServiceUrl
類來專門保存微服務(wù)的 URL
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "url") public class MicroServiceUrl { private String orderUrl; private String userUrl; private String shoppingUrl; public String getOrderUrl() { return orderUrl; } public void setOrderUrl(String orderUrl) { this.orderUrl = orderUrl; } public String getUserUrl() { return userUrl; } public void setUserUrl(String userUrl) { this.userUrl = userUrl; } public String getShoppingUrl() { return shoppingUrl; } public void setShoppingUrl(String shoppingUrl) { this.shoppingUrl = shoppingUrl; } }
添加依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
目前配置寫好了,此時,不需要在代碼中一個個引入這些微服務(wù)的 URL,直接通過 @Resource 注解將剛剛寫好的配置類注入進(jìn)來即可使用了,以下是測試Controller:
import com.example.test1.config.MicroServiceUrl; 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; import javax.annotation.Resource; /** * 獲取配置文件(application.yml)中和 key 對應(yīng)的 value 值 * 2種方法 */ @RestController @RequestMapping("/test") public class ConfigController { private static final Logger LOGGER = LoggerFactory.getLogger(ConfigController.class); @Value("${url.orderUrl}") private String orderUrl; @Resource private MicroServiceUrl microServiceUrl; @RequestMapping("/config") public String testConfig() { LOGGER.info("獲取的地址為:{}", orderUrl); LOGGER.info("微服務(wù)1地址為:{}", microServiceUrl.getOrderUrl()); LOGGER.info("微服務(wù)2地址為:{}", microServiceUrl.getUserUrl()); LOGGER.info("微服務(wù)3地址為:{}", microServiceUrl.getShoppingUrl()); return "success"; } }
到此這篇關(guān)于springboot如何獲取application.yml里的值的文章就介紹到這了,更多相關(guān)springboot獲取值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何基于Spring使用工廠模式實(shí)現(xiàn)程序解耦
這篇文章主要介紹了如何基于Spring使用工廠模式實(shí)現(xiàn)程序解耦,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12SpringBoot詳解整合MyBatis過程中可能遇到的問題
因為Spring Boot框架開發(fā)的便利性,所以實(shí)現(xiàn)Spring Boot與數(shù)據(jù)訪問層框架(例如MyBatis)的整合非常簡單,主要是引入對應(yīng)的依賴啟動器,并進(jìn)行數(shù)據(jù)庫相關(guān)參數(shù)設(shè)置即可2022-07-07MyBatis創(chuàng)建存儲過程的實(shí)例代碼_動力節(jié)點(diǎn)Java學(xué)院整理
本節(jié)需要用到的有2部分,第一部分是如何在Derby中創(chuàng)建存儲過程,第二部分是如何在Mybatis中調(diào)用存儲過程,具體實(shí)例代碼大家參考下本文吧2017-09-09Java的線程與進(jìn)程以及線程的四種創(chuàng)建方式
這篇文章主要為大家詳細(xì)介紹了Java的線程與進(jìn)程以及線程的四種創(chuàng)建方式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03