电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

我們?cè)陧?xiàng)目開發(fā)中經(jīng)常會(huì)用到配置信息,例如數(shù)據(jù)庫(kù)連接的帳號(hào)、密碼等,而為了方便維護(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 對(duì)應(yīng)的 value 值,并將value值賦給對(duì)應(yīng)的變量,之后就像使用正常變量一樣就可以獲取到配置信息。

@ConfigurationProperties讀取一組配置信息

@ConfigurationProperties注解用于讀取指定前綴的一組配置信息并與bean綁定,具體的配置屬性會(huì)綁定到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適用與少量配置信息的場(chǎng)景,在一些較復(fù)雜的場(chǎng)景下(業(yè)務(wù)繁瑣、配置項(xiàng)多),需要考慮把相關(guān)一組配置信息封裝成一個(gè)或多個(gè)配置信息類,這時(shí)就可以使用@ConfigurationProperties。

@PropertySource讀取指定配置文件

當(dāng)我們項(xiàng)目比較大配置信息比較多的時(shí),如果所有的配置信息都放在一個(gè)配置文件中,就會(huì)顯得比較臃腫且不易理解和維護(hù)。此時(shí),我們可以按照需求將該配置文件拆分為多個(gè),并使用@PropertySource注解配合@Value或@ConfigurationProperties讀取指定配置文件中的配置信息。假設(shè)我們存儲(chǔ)數(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ā)中,我們一般最少會(huì)有兩個(gè)環(huán)境——開發(fā)環(huán)境和線上環(huán)境,可能還會(huì)存在測(cè)試環(huán)境,這些環(huán)境往往會(huì)使用不同的配置信息,比如端口、數(shù)據(jù)庫(kù)鏈接地址等。如果我們把項(xiàng)目部署到線上環(huán)境后,在把配置信息一項(xiàng)一項(xiàng)的改成線上環(huán)境對(duì)應(yīng)的會(huì)比較麻煩。比較科學(xué)的解決方法是,線上環(huán)境對(duì)應(yīng)一套配置信息,開發(fā)環(huán)境對(duì)應(yīng)一套,當(dāng)我們?cè)陂_發(fā)環(huán)境時(shí)指定讀取開發(fā)的配置,在線上時(shí)指定讀取線上的配置。

假設(shè)開發(fā)環(huán)境對(duì)應(yīng)的配置文件為application-d.yml,線上環(huán)境對(duì)應(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會(huì)自動(dòng)映射為tranprocol的key,orderid和count會(huì)映射到MsgInfo的成員屬性上。

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

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

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

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 环球周刊网| 学生作文网_中小学生作文大全与写作指导 | 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 线材成型机,线材折弯机,线材成型机厂家,贝朗自动化设备有限公司1 | LED太阳能中国结|发光红灯笼|灯杆造型灯|节日灯|太阳能灯笼|LED路灯杆装饰造型灯-北京中海轩光电 | 气动调节阀,电动调节阀,自力式压力调节阀,切断阀「厂家」-浙江利沃夫自控阀门 | 电抗器-能曼电气-电抗器专业制造商 | 小小作文网_中小学优秀作文范文大全 | 东莞注册公司-代办营业执照-东莞公司注册代理记账-极刻财税 | 三效蒸发器_多效蒸发器价格_四效三效蒸发器厂家-青岛康景辉 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 卷筒电缆-拖链电缆-特种柔性扁平电缆定制厂家「上海缆胜」 | 山东彩钢板房,山东彩钢活动房,临沂彩钢房-临沂市贵通钢结构工程有限公司 | 二手回收公司_销毁处理公司_设备回收公司-找回收信息网 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 江西自考网| 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 氧化铝球_高铝球_氧化铝研磨球-淄博誉洁陶瓷新材料有限公司 | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 | 单锥双螺旋混合机_双螺旋锥形混合机-无锡新洋设备科技有限公司 | 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 丁基胶边来料加工,医用活塞边角料加工,异戊二烯橡胶边来料加工-河北盛唐橡胶制品有限公司 | 沈阳网站建设_沈阳网站制作_沈阳网页设计-做网站就找示剑新零售 沈阳缠绕膜价格_沈阳拉伸膜厂家_沈阳缠绕膜厂家直销 | 杭州用友|用友软件|用友财务软件|用友ERP系统--杭州协友软件官网 | 月嫂_保姆_育婴_催乳_母婴护理_产后康复_养老护理-吉祥到家家政 硫酸亚铁-聚合硫酸铁-除氟除磷剂-复合碳源-污水处理药剂厂家—长隆科技 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 医疗仪器模块 健康一体机 多参数监护仪 智慧医疗仪器方案定制 血氧监护 心电监护 -朗锐慧康 | 非甲烷总烃分析仪|环控百科 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 | 阿米巴企业经营-阿米巴咨询管理-阿米巴企业培训-广东键锋企业管理咨询有限公司 | 南京蜂窝纸箱_南京木托盘_南京纸托盘-南京博恒包装有限公司 | 丝杆升降机-不锈钢丝杆升降机-非标定制丝杆升降机厂家-山东鑫光减速机有限公司 | 水性漆|墙面漆|木器家具漆|水漆涂料_晨阳水漆官网 | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 京港视通报道-质量走进大江南北-京港视通传媒[北京]有限公司 | 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 湖州织里童装_女童男童中大童装_款式多尺码全_织里儿童网【官网】-嘉兴嘉乐网络科技有限公司 | 超声波焊接机_超音波熔接机_超声波塑焊机十大品牌_塑料超声波焊接设备厂家 | 污水处理设备维修_污水处理工程改造_机械格栅_过滤设备_气浮设备_刮吸泥机_污泥浓缩罐_污水处理设备_污水处理工程-北京龙泉新禹科技有限公司 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 |