javascript
iis无法读取配置文件_SpringBoot 有很多读取配置文件的方法,你知道几个? 静态方法读取呢?...
SpringBoot 如何在靜態方法中讀取配置文件的值
在Spring中呢有很多讀取配置文件值的相關注解,讀取這些配置文件都是依賴于Spring的方式。我發現的讀取配置文件的方式有好幾種。
1、@Value 注解
2、@ConfigurationProperties 和 @EnableConfigurationProperties(@Compent)
3、@PropertySource
4、Environment
5、PropertySourcesPlaceholderConfigurer
6、自己寫一個靜態讀取的配置文件的工具類(包括 jar 包外的配置文件,與SpringBoot讀取的配置文件一致)
配置好一個配置文件// yml// 寫一個測試類 1、@Value 注解 讀取@Value 注解的讀取配置文件是依賴于IOC容器的,也屬于依賴注入,這一點看過Spring的IOC源碼的都清楚,屬于屬性的注入,所以是依賴于Spring的,所以呢,在該類使用@Value注解的時候,該類必須是歸屬于Spring管理的類。
示例:
@Component 2、@ConfigurationProperties 和 @EnableConfigurationProperties@ConfigurationProperties 注解適用于自動化配置的類,在SpringBoot的jdbc的數據源自動化配置:
@ConfigurationProperties在SpringBoot中我們使用數據源是這樣子配置的:
# 數據源所以在我們也需要寫一個自動化配置類的時候,就可以使用改注解來處理。
有個地方需要注意的地方
類似于這樣有行杠的,在java類中需要與駝峰的方式命名。
driver-class-name ----> driverClassName示例: 配置文件在上面已經寫了
@ConfigurationProperties在啟動類中加入 注解 @EnableConfigurationProperties(value={User.class})
或者在 User.class 加上 @Compent 注解
@EnableConfigurationProperties3、@PropertySource 和 @Configuration@PropertySource 指定加載配置文件,但是不支持yml 的配置方式,也不支持打jar包后讀取jar包外的配置,只能是類路徑下的,不友好。也是依賴Spring的所以使用改注解的類需要放到Spring的IOC管理
示例:
配置
config.app=TestApp config.version=1.0.0配置類:
@Component 4、Environment在Spring里可以通過注入 該對象,就可以讀取配置文件的的屬性值,也是依賴于Spring的注入
獲得改對像的方式有好多方式:介紹兩種
- @Autowired依賴注入
- 實現接口EnvironmentAware。當一個工具類使用,但是該工具類得需要在Spring容器啟動后,才可以使用
PropertySourcesPlaceholderConfigurer是個bean工廠后置處理器的實現,同時也實現了 EnvironmentAware,也是處理 @Value 屬性注入的處理關鍵類。該類的屬性也是來自 Environment 的。
示例:
@Component 6、自己寫一個靜態讀取的配置文件的工具類(包括 jar 包外的配置文件,與SpringBoot讀取的配置文件一致在上面讀取配置文件的方式中有幾個點:
- 1、這些文件的方式都依賴Spring的注入。
- 2、靜態方式讀取不方便,必須得在Spring容器啟動才可以加載配置文件,對于有時需要在Spring容器啟動完畢前,需要加載配置文件不方便。
- 3、自定義加載配置問題,不可以加載jar包外的自定義配置文件。除了:application.yml/ properties和 不同環境的配置文件外。 比如 @PropertySource 注解只能加載 類路徑下的。打jar包后不可以使用,切不能加載y ml配置。
結合以上幾點,我們可以自己寫一個 在Spring的讀取配置的基礎上,補全以上問題的工具類。
1、工具類的功能介紹:
- 如果在啟動項目的時候,通過參數指定配置文件的方式的時候。該工具類不會加載該參數指定的其它配置文件。文件的讀取規則如下。
- 基于SpringBoot 使用
- 工具類加載配置文件的順序與SpringBoot保持一致
配置文件有先級:. properties> .yml ;優先加載. properties 如果沒有就加載 yml的
開發環境下:resources/config > resources/
jar包:jar包同級目錄的config/ > jar包同級目錄 > jar 包內的resources/config/ jar 包內的resources/
- 默認加載:application.properties、application.properties的spring.profiles.active 指定的文件、和一個config.propertis/config.yml(優先于config.propertis);
- 上一點的三個默認配置文件可以在jar包同級目錄config文件夾下或者jar包同級目錄下。方便于修改,于SpringBoot加載順序一樣。
- 加載 list集合方式:
例如:
不支持這樣子配置的集合讀取:
lists- 不支持 集合對象方式讀取
- map 結構方式讀取
例如:
不支持對象嵌套對象。
map#properties map={name: tom , age:18 } ```
關于改工具類的集合和map的配置:
集合和map的讀取方式,需要按照如上說明配置。
如果不使用該工具類讀取集合和map結構,但是需要注入到類對象中的話,可以按照SpringBoot中的配置規則去配置。
也可以配置成集合對象,當字符串讀取,然后自己轉換。
2、工具類的使用(兩種)
1、可以將工具打成一個 jar 包/將該源碼,引入到項目中,然后在啟動類加上注解 @EnableReadConfig
該方式需要依賴于Spring的方式,可以讀取系統變量,需要等待Spring啟動,加載。
2、手工加載
該方式目前不可讀取系統變量,但是可以不依賴Spring容器去加載。
// 參數 類加載器 :引用該類的任意類class3、加載第三方配置文件
void加了 classpath:代表加載的是類路徑下的。其它的就是 絕對路徑下的配置文件
示例:
@SpringBootApplication打印結果:
jar包方式:
開發環境方式:
3、代碼結構
tool-read-config
PropertiesUtils.java工具類api
memoryoverflow/tools-read-config?gitee.comhttps://gitee.com/lyj08/tools-read-config
http://weixin.qq.com/r/YxxocNLExo_5rZYT90lx (二維碼自動識別)
總結
以上是生活随笔為你收集整理的iis无法读取配置文件_SpringBoot 有很多读取配置文件的方法,你知道几个? 静态方法读取呢?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python获取当前路径的方法_Pyth
- 下一篇: 上下伸缩代码_CQRS之旅——旅程4(扩