亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Spring boot外部配置(配置中心化)詳解

2024-07-13 10:14:24
字體:
來源:轉載
供稿:網友

前言

在項目中為了靈活配置,我們常采用配置文件,常見的配置文件就比如xml和properties,springboot允許使用properties和yaml文件作為外部配置?,F在編譯器對于yaml語言的支持還不夠好,目前還是使用properties文件作為外部配置。

在Spring cloud config出來之前, 自己實現了基于ZK的配置中心, 杜絕了本地properties配置文件, 原理很簡單, 只是重載了PropertyPlaceholderConfigurer的mergeProperties() :

/** * 重載合并屬性實現 * 先加載file properties, 然后并入ZK配置中心讀取的properties * * @return 合并后的屬性集合 * @throws IOException 異常 */@Overrideprotected Properties mergeProperties() throws IOException { Properties result = new Properties(); // 加載父類的配置 Properties mergeProperties = super.mergeProperties(); result.putAll(mergeProperties); // 加載從zk中讀取到的配置 Map<String, String> configs = loadZkConfigs(); result.putAll(configs); return result;}

這個實現在spring項目里用起來還是挺順手的, 但是近期部分spring-boot項目里發現這種placeholder的實現跟spring boot的@ConfigurationProperties(prefix = "xxx") 不能很好的配合工作,

也就是屬性沒有被resolve處理, 用@Value的方式確可以讀到, 但是@Value配置起來如果屬性多的話還是挺繁瑣的, 還是傾向用@ConfigurationProperties的prefix, 于是看了下spring boot的文檔發現 PropertySource

order:

* Devtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).

* @TestPropertySource annotations on your tests.

* @SpringBootTest#properties annotation attribute on your tests.

* Command line arguments.

* Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property)

* ServletConfig init parameters.

* ServletContext init parameters.

* JNDI attributes from java:comp/env.

* Java System properties (System.getProperties()).

* OS environment variables.

* A RandomValuePropertySource that only has properties in random.*.

* Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants)

* Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants)

* Application properties outside of your packaged jar (application.properties and YAML variants).

* Application properties packaged inside your jar (application.properties and YAML variants).

* @PropertySource annotations on your @Configuration classes.

* Default properties (specified using SpringApplication.setDefaultProperties).

不難發現其會檢查Java system propeties里的屬性, 也就是說, 只要把mergerProperties讀到的屬性寫入Java system props里即可, 看了下源碼, 找到個切入點

/** * 重載處理屬性實現 * 根據選項, 決定是否將合并后的props寫入系統屬性, Spring boot需要 * * @param beanFactoryToProcess * @param props    合并后的屬性 * @throws BeansException */@Overrideprotected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException { // 原有邏輯  super.processProperties(beanFactoryToProcess, props); // 寫入到系統屬性 if (writePropsToSystem) {  // write all properties to system for spring boot  Enumeration<?> propertyNames = props.propertyNames();  while (propertyNames.hasMoreElements()) {    String propertyName = (String) propertyNames.nextElement();    String propertyValue = props.getProperty(propertyName);    System.setProperty(propertyName, propertyValue);  } }}

為避免影響過大, 設置了個開關, 是否寫入系統屬性, 如果是spring boot的項目, 就開啟, 這樣對線上非spring boot項目做到影響最小, 然后spring boot的@ConfigurationProperties完美讀到屬性;

具體代碼見: org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor

@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName)  throws BeansException { ConfigurationProperties annotation = AnnotationUtils   .findAnnotation(bean.getClass(), ConfigurationProperties.class); if (annotation != null) {  postProcessBeforeInitialization(bean, beanName, annotation); } annotation = this.beans.findFactoryAnnotation(beanName, ConfigurationProperties.class); if (annotation != null) {  postProcessBeforeInitialization(bean, beanName, annotation); } return bean;}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文在线资源观看视频网站免费不卡| 91香蕉亚洲精品| 国产亚洲精品美女| 日韩国产一区三区| 欧美中文在线视频| 日韩经典第一页| 视频直播国产精品| 欧美一级黑人aaaaaaa做受| 狠狠色香婷婷久久亚洲精品| 亚洲天堂2020| 日韩影视在线观看| 视频直播国产精品| 久久久久久久久电影| 久久久久久国产| 久久久久久久久久久免费| 亚洲精品v天堂中文字幕| 中文字幕久热精品视频在线| 成人欧美在线观看| 91高清视频在线免费观看| 亚洲第一中文字幕在线观看| 日韩福利视频在线观看| 亚洲国模精品私拍| 成人在线视频福利| 久久久久国产精品一区| 久久精品国产成人精品| 欧美精品福利在线| 日本免费在线精品| 亚洲天堂2020| 91精品国产91久久久久久| 精品日韩美女的视频高清| 亚洲国产天堂久久综合| 成人有码在线播放| 亚洲第一男人天堂| 欧美一区三区三区高中清蜜桃| 国产成人久久精品| 精品网站999www| 欧美国产日韩一区二区三区| 亚洲性线免费观看视频成熟| 亚洲福利视频专区| 成人性生交xxxxx网站| 亚洲欧洲日产国码av系列天堂| 深夜福利亚洲导航| 韩国一区二区电影| 欧美黄色www| 亚洲欧美日韩综合| 成人av色在线观看| 亚洲精品mp4| 91免费国产视频| 色琪琪综合男人的天堂aⅴ视频| 国产日本欧美在线观看| 欧美精品免费在线| 欧美日韩午夜剧场| 亚洲色图激情小说| 久久久精品视频成人| 日韩美女视频在线观看| 亚洲午夜精品久久久久久久久久久久| 91tv亚洲精品香蕉国产一区7ujn| 精品成人国产在线观看男人呻吟| 91色精品视频在线| 日韩欧美国产骚| 日韩精品免费在线播放| 成人在线视频福利| 日韩av最新在线| 精品久久久中文| 久久99久国产精品黄毛片入口| 亚洲精品天天看| 日韩av综合网站| 亚洲精品福利资源站| 亚洲最大av网| 精品国模在线视频| 亚洲国产精品999| 日韩电影大片中文字幕| 亚洲福利视频在线| 亚洲夜晚福利在线观看| 色婷婷综合久久久久| 欧美日韩国产999| 一区二区三区 在线观看视| 色无极影院亚洲| 欧美午夜精品久久久久久人妖| 欧美成人亚洲成人日韩成人| 日韩大胆人体377p| 亚洲免费影视第一页| 国产精品久久久久久久美男| 国产精品国产三级国产aⅴ9色| 日韩中文字幕在线看| 久久精品一偷一偷国产| 最近2019好看的中文字幕免费| 亚洲欧美国产一区二区三区| 亚洲男人的天堂在线播放| 久久久久久久久久婷婷| 日本亚洲精品在线观看| 成人高清视频观看www| 欧美日韩亚洲一区二区| 91亚洲精品在线观看| 精品国产视频在线| 中文字幕在线看视频国产欧美| 91网站在线免费观看| 国产精品福利在线观看网址| 国内精品久久影院| 精品福利在线视频| 日韩国产高清视频在线| 91久久精品国产91性色| 狠狠躁夜夜躁人人躁婷婷91| 97激碰免费视频| 久久综合免费视频| 久久精品国产精品| 国产精品一区二区3区| 欧美一区二粉嫩精品国产一线天| 国产ts人妖一区二区三区| 91精品国产91久久久久久| 欧美视频免费在线| 国产一区二区三区免费视频| 日韩日本欧美亚洲| 国产精品久久久久久久久男| 精品国产一区二区三区久久久| 日韩在线视频播放| 欧美猛交ⅹxxx乱大交视频| 亚洲精品国产精品国产自| 国产精品成人v| 色先锋资源久久综合5566| 日韩欧美国产免费播放| 神马久久久久久| 日韩性生活视频| 亚洲欧美在线免费| 亚洲第一天堂无码专区| 久久精品国产亚洲7777| 97精品国产97久久久久久免费| 日韩精品免费看| 91av在线影院| 久久久久久成人精品| 亚洲码在线观看| 国产亚洲视频中文字幕视频| 538国产精品视频一区二区| 91夜夜揉人人捏人人添红杏| 正在播放欧美视频| 亚洲欧美另类人妖| 精品久久久久国产| 777精品视频| 国产成人精品av在线| 国产视频观看一区| 中文字幕亚洲第一| 欧美日韩视频在线| 国产精品久久激情| 欧美成人免费小视频| 精品国内产的精品视频在线观看| 日韩欧美a级成人黄色| 色综合久久88| 亚洲天天在线日亚洲洲精| 美女黄色丝袜一区| 亚洲高清在线观看| 在线观看日韩欧美| 日韩精品在线第一页| 夜夜嗨av一区二区三区四区| 韩国三级电影久久久久久| 精品国产一区二区三区久久久狼| 亚洲黄色成人网| 亚洲最大成人网色| 亚洲精品美女在线观看| 亚洲尤物视频网| 98精品在线视频| 人人做人人澡人人爽欧美| 日韩亚洲国产中文字幕| 国产一区玩具在线观看| 成人久久一区二区三区|