1. 程式人生 > >@Value在Spring及SpringBoot中的配置及使用

@Value在Spring及SpringBoot中的配置及使用

厚顏打廣告,博主個人部落格地址傳送門

@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字元時,會產生亂碼。