yml格式的配置文件感覺(jué)很人性化,所以想把項(xiàng)目中的.properties都替換成.yml文件,主要springboot自1.5以后就把@configurationProperties中的location參數(shù)去掉,各種查詢(xún)之后發(fā)現(xiàn)可以用YamlPropertySourceLoader去裝載yml文件,上代碼
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到鄠邑網(wǎng)站設(shè)計(jì)與鄠邑網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋鄠邑地區(qū)。
public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) { ResourceLoader loader = new DefaultResourceLoader(); YamlPropertySourceLoader yamlLoader = new YamlPropertySourceLoader(); ListyamlFilePaths = new ArrayList<>(); while(true){ String yamlFilePath = environment.getProperty("load.yaml["+i+"]"); if(yamlFilePath==null){ break; } i++; if("".equals(yamlFilePath)){ continue; } yamlFilePaths.add(yamlFilePath); } yamlFilePaths.forEach(filePath->{ try { environment.getPropertySources().addLast(yamlLoader.load(filePath,loader.getResource(filePath),null)); } catch (IOException e) { logger.error("load property file failed!file:" + filePath); throw new RuntimeException(e); } }); }
這里主要實(shí)現(xiàn)了spring boot的ApplicationListener
1.ApplicationStartedEvent spring boot 剛啟動(dòng)時(shí)會(huì)觸發(fā)事件
2.ApplicationEnvironemntPreparedEvent spring boot 完成Environment的裝載但是還沒(méi)有開(kāi)始applicationContext的裝載的時(shí)候觸發(fā)(它和實(shí)現(xiàn)了EnvironmentAware不一樣,后者時(shí)需要Bean被裝載進(jìn)去后才調(diào)用)
3.ApplicationPreparedEvent springboot 完成上下文的創(chuàng)建,單還沒(méi)有完全完成bean的裝載
4.ApplicationFailedEvent spring boot啟動(dòng)異常時(shí)觸發(fā)。
spring boot內(nèi)部本身就有很多l(xiāng)istener,他們分別監(jiān)聽(tīng)上面幾種事件,這里就不再贅述,有興趣的同學(xué)可以研究一下spring boot的源碼。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。