springboot @ConfigurationProperties和@PropertySource的區別
springboot @ConfigurationProperties和@PropertySource區別
@ConfigurationProperties
:尋找的是全局配置文件
@PropertySource
:尋找的是指定的配置文件
理解裡面有一個參數 value,可以指定很多個配置文件,所以是使用一個數組{}
springboot推薦使用這種方式給容添加組件:
創建一個config包,然後在包下創建一個class
使用@bean給容器中添加組件
springboot 使用@ConfigurationProperties和@PropertySource的問題
在使用Springboot時我們經常把一些key-value的屬性值配置在
.properties配置文件中,我們想通過@Value搭配Spring EL來讀取配置文件中的值來給我們的變量賦值。
在spring1.5一下提供瞭一個類註解:
@ConfigurationProperties:
常用的兩個屬性是:
locations
:指定配置文件
prefix
:指定該配置文件中的某個屬性群的前綴
但是使用spring1.5時,源碼部分做瞭修改,去掉瞭locations屬性,所以另一個註解就上場啦
@PropertySource:
value
:這裡指定配置文件,替代原來@ConfigurationProperties的locations
encoding
:指定讀取配置文件時的編碼
這個encoding很重要,如果不指定使用默認的話很可能出現讀取亂碼的情況,我寫demo就遇到瞭,百度瞭很多解決方案都是從ide工具本身入手,根本不能解決問題,最後還是我自己看註解的源碼才發現有這個屬性的。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- SpringBoot配置加載,各配置文件優先級對比方式
- SpringBoot實現配置文件的替換
- SpringBoot @PropertySource與@ImportResource有什麼區別
- 解決springboot利用ConfigurationProperties註解配置數據源無法讀取配置信息問題
- Spring註解@Value及屬性加載配置文件方式