@Value注解


1 @Value注解作用

讀取配置文件中的屬性。

@Value的值有以下兩類:
${ property : default_value } 
#{ obj.property? :default_value } 

$注入的是外部配置文件對應的property,使用“:”對未配置或值為空的屬性設置默認值。

#注入的是SpEL表達式對應的內容,使用“?:”對未配置或值為空的表達式設置默認值。

default_value為默認值。

2 舉例

apollo.meta = xxxx  字符串

apollo.namespace = xxx,xxx,xxx  數組

channelIdToName = {1: "全畫作", 2: "全古籍", 3: "全音樂"}  map

基於配置文件注入

/**
 * 注入簡單字符串
 */
@Value("${apollo.meta:xxx}")  讀取字符串配置項,配置為空時取默認值xxx。
String meta;

/**
 * 注入數組,默認','分隔
 */
@Value("${apollo.namespace}")  讀取逗號分隔的字符串
String[] array;

/**
 * 注入列表,默認','分隔
 */
@Value("${apollo.namespace}")  讀取逗號分隔的字符串
List<String> list;

/**
 * 注入map,#和$並用,#要在$前面
 */
@Value("#{${channelIdToName}}")  讀取配置文件中的map,直接賦值給已定義好的map類型。
Map<Integer,String> map;

 

基於非配置文件注入

/**
 * 注入普通字符串,相當於直接給屬性默認值
 */
@Value("項目名")
private String projectName;


/**
 * 注入操作系統屬性
 */
@Value("#{systemProperties['os.name']}")
private String systemPropertiesName;


/**
 * 注入其他Bean屬性:注入article對象的屬性title
 */
@Value("#{article.title}")
private String articleTitle;


/**
 * 注入列表,設置根據"|"來分隔
 */
@Value("#{'${words}'.split('\\|')}")
private List<String> numList;


/**
 * 注入文件資源
 */
@Value("classpath:config.xml")
private Resource config;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM