亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

詳解SpringBoot讀取配置文件的N種方法

瀏覽:31日期:2023-03-25 10:02:36

我們在項(xiàng)目開發(fā)中經(jīng)常會用到配置信息,例如數(shù)據(jù)庫連接的帳號、密碼等,而為了方便維護(hù),我們通常將這些信息放到配置文件中。在需要用到這些配置信息時(shí),可以通過代碼獲取。下面我們看看Spring中有哪些獲取配置信息的方法。

PropertiesLoaderUtils讀取

通過ClassPathResource加載配置文件資源,結(jié)合PropertiesLoaderUtils類讀取,源碼如下:

ClassPathResource resource = new ClassPathResource('application.properties'); try { Properties properties = PropertiesLoaderUtils.loadProperties(resource); String account = properties.getProperty('jdbc.account');} catch (IOException e) { …… }@Value注解讀取指定屬性

配置信息

jdbc: account: zhangsan pwd: 123456

讀取方法

@Componentpublic class JdbcService { @Value('${jdbc.account}') private String account; @Value('${jdbc.pwd}') private String pwd; public void connectDb() { System.out.println('Database has connected, jdbc account is ' + account + ', password is ' + pwd); }}

@Value 注解通過 ${key}獲取配置文件中和 key 對應(yīng)的 value 值,并將value值賦給對應(yīng)的變量,之后就像使用正常變量一樣就可以獲取到配置信息。

@ConfigurationProperties讀取一組配置信息

@ConfigurationProperties注解用于讀取指定前綴的一組配置信息并與bean綁定,具體的配置屬性會綁定到bean的成員屬性中,即前綴名+成員屬性名等于配置文件中的key。之后可以像使用其他bean一樣使用該bean并讀取配置信息。

配置信息

user: name: zhangsan sex: 男 homeUrl: www.xxx.com

綁定bean

@Component@Data@ConfigurationProperties(prefix = 'user')public class User { private String name; private String sex; private String homeUrl;}

使用bean

@Servicepublic class UserService { @Autowired User user; public void getUserInfo() { System.out.println(user.toString()); }}

@Value適用與少量配置信息的場景,在一些較復(fù)雜的場景下(業(yè)務(wù)繁瑣、配置項(xiàng)多),需要考慮把相關(guān)一組配置信息封裝成一個(gè)或多個(gè)配置信息類,這時(shí)就可以使用@ConfigurationProperties。

@PropertySource讀取指定配置文件

當(dāng)我們項(xiàng)目比較大配置信息比較多的時(shí),如果所有的配置信息都放在一個(gè)配置文件中,就會顯得比較臃腫且不易理解和維護(hù)。此時(shí),我們可以按照需求將該配置文件拆分為多個(gè),并使用@PropertySource注解配合@Value或@ConfigurationProperties讀取指定配置文件中的配置信息。假設(shè)我們存儲數(shù)據(jù)連接信息的配置文件為jdbc.properties,內(nèi)容如下:

jdbc: account: zhangsan pwd: 123456

@Component@Data@PropertySource(value = {'classpath:jdbc.properties'})@ConfigurationProperties(prefix = 'jdbc')public class JdbcCfg { private String account; private String pwd; public void connectDb() { System.out.println('Database has connected, jdbc account is ' + account + ', password is ' + pwd); }}

也可以和@Value配合使用。

@Component@PropertySource(value = {'classpath:jdbc.properties'})public class JdbcCfg { @Value('${jdbc.account}') private String account; @Value('${jdbc.pwd}') private String pwd; public void connectDb() { System.out.println('Database has connected, jdbc account is ' + account + ', password is ' + pwd);}指定項(xiàng)目的配置文件

在實(shí)際開發(fā)中,我們一般最少會有兩個(gè)環(huán)境——開發(fā)環(huán)境和線上環(huán)境,可能還會存在測試環(huán)境,這些環(huán)境往往會使用不同的配置信息,比如端口、數(shù)據(jù)庫鏈接地址等。如果我們把項(xiàng)目部署到線上環(huán)境后,在把配置信息一項(xiàng)一項(xiàng)的改成線上環(huán)境對應(yīng)的會比較麻煩。比較科學(xué)的解決方法是,線上環(huán)境對應(yīng)一套配置信息,開發(fā)環(huán)境對應(yīng)一套,當(dāng)我們在開發(fā)環(huán)境時(shí)指定讀取開發(fā)的配置,在線上時(shí)指定讀取線上的配置。

假設(shè)開發(fā)環(huán)境對應(yīng)的配置文件為application-d.yml,線上環(huán)境對應(yīng)的配置文件為application-d.yml。然后在application.yml文件中配置要使用的哪個(gè)配置文件即可,如在線上環(huán)境可按如下指定。

spring: profiles: active: - p讀取復(fù)雜配置信息

看下如下配置文件

#http協(xié)議下消息傳輸msgtransfer.tranprocol.http.orderid = order1msgtransfer.tranprocol.http.count = 100#fix協(xié)議下消息傳輸msgtransfer.tranprocol.fix.orderid = order2msgtransfer.tranprocol.fix.count = 200

上面的配置文件是為了支持不同協(xié)議的消息傳輸,該配置的key中也存在變量,這樣的配置信息如何讀取呢?

@Component@Data@ConfigurationProperties(prefix = 'msgtransfer')public class MsgTransferCfg { private Map<String, MsgInfo> tranprocol; public static class MsgInfo { private String orderid; private int count; } }

關(guān)鍵點(diǎn)在private Map<String, MsgInfo> tranprocol;,http和fix會自動映射為tranprocol的key,orderid和count會映射到MsgInfo的成員屬性上。

如果在配置文件的key中使用變量的,需要在相應(yīng)的bean中定義map,配置文件和map的對應(yīng)規(guī)則如下:

前綴.map名稱.key.pro = value

到此這篇關(guān)于詳解SpringBoot讀取配置文件的N種方法的文章就介紹到這了,更多相關(guān)SpringBoot讀取配置文件內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 国产成人亚洲影视在线 | 亚洲免费精品视频 | 精品一区二区影院在线 | 欧美一级大黄 | 欧美日韩精品国产一区在线 | 国产人成精品午夜在线观看 | 久操久热| 免费观看黄色视屏 | 国产亚洲精品美女2020久久 | 久久尤物视频 | 亚洲午夜久久久精品影院视色 | 国产成人亚洲综合一区 | 国产精品久久久久久久hd | 爱爱免费小视频 | 国产精品第 | 日韩亚洲视频 | 亚洲视频999 | 中国黄色片一级 | 久久精品国产亚洲精品 | 在线视频观看国产 | 亚洲欧美久久婷婷爱综合一区天堂 | 色综合加勒比 | 1024免费在线观看 | 欧美视频免费在线播放 | 91精品天美精东蜜桃传媒免费 | 求毛片网站 | 日韩欧美一区二区久久黑人 | 中文字幕在线观看网站 | 国模私拍高清大胆专业网站 | 丝袜美腿国产精品视频一区 | 国产精品玩偶在线观看 | 免费国产午夜在线观看 | 黄网站在线观看永久免费 | 精品一区二区三区免费毛片爱 | 国产三级网站在线观看 | 伊人丁香花久久爱综合 | 新国产视频 | 色综合合久久天天综合绕视看 | 全免费午夜一级毛片一级毛 | 国产精品国产高清国产专区 | 操出水视频 |