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;