@Value在Spring及SpringBoot中的配置及使用
阿新 • • 發佈:2018-12-18
厚顏打廣告,博主個人部落格地址傳送門
@Value註解簡介
在開發的過程中,很多東西我們都將其放置在配置檔案中,然後使用程式碼對配置檔案進行解析,這樣易於系統的維護,減少運維成本。傳統的讀取配置檔案的寫法為:
````
Properties properties = new Properties(); // 使用InPutStream流讀取properties檔案 BufferedReader bufferedReader = new BufferedReader(new FileReader("D:/config.properties")); properties.load(bufferedReader); // 獲取key對應的value值 properties.getProperty(String key); ````
而Spring簡化了這個步驟,使用@Value自定義註解的形式進行檔案物件內容的讀取,其原始碼為:
// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package org.springframework.beans.factory.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Value { String value(); }
而其使用方式也很簡單:
1、@Value("#{configProperties['key']}")
2、@Value("${key}")
這種方式大大簡化了專案配置,提高業務中的靈活性。
在Spring中的配置及使用方法
在spring的配置檔案中進行bean的配置
Spring的配置檔案中寫入
<--配置一個名字叫做configProperties的bean,這個bean的位置(locations)是classpath:/config/test.properties--> <bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="locations"> <list> <value>classpath:/config/test.properties</value> </list> </property> </bean>
在/config/test.properties 寫入
requestUrl=testUrlFromProperties
在Springboot 的application.yml檔案中的配置及使用方法
在application.yml中設定一個名字為testPropertyBean的物件以及testPropertyParam1的引數,設定的方法如下圖所示:
在Springboot 的application.properties檔案中的配置及使用方法
在application.properties檔案中的任意地方頂格加入:
aaaa="這裡的資訊是從檔案中讀取到的"
bbbb="safdsfsgdsfhsdfhsdfhshsdhsdf"
註解注入方式1
進行這樣配置的之後就可以使用@Value註解對檔案進行取值,取值的方法為:
@Value("#{configProperties['requestUrl']}")
private String setRequestUrl;
註解注入方式2
@Value("${bbbb}")
private String aaaa ;
注意:
1.這個@Value註解只能在方法外面進行引數的注入;
2.設定的引數值為漢字等UTF-8字元時,會產生亂碼。