@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;

 

posted @ 2020-12-17 17:12  江湖凶险  阅读(7467)  评论(0编辑  收藏  举报