使用SpEL表达式绑定字符串集合
employee.properties
1 | employee.names=james,curry,zimug,姚明 |
Employee
1 | @Data |
1 | @ExtendWith(SpringExtension.class) |
SpEL结合@Value注解读取配置文件属性
假如我们需要获取第一位(数组下标从0开始)雇员的姓名,可以使用如下的SpEL表达式:
1
2@Value ("#{'${employee.names}'.split(',')[0]}")
private String firstEmployeeName;属性值注入完成之后,firstEmployeeName=‘’james‘’
我们还可以使用@Value注解将键值对、类对象的数据结构转换为java的Map数据类型
1
2@Value ("#{${employee.age}}")
private Map<String, Integer> employeeAge;属性值注入完成之后,employeeAge={one=27, two=35, three=34, four=26}
- 假如我们需要根据Map的Key获取Value属性值,可以使用如下的SpEL表达式:属性值注入完成之后,employeeAgeTwo=35
1
2
3@Value ("#{${employee.age}.two}")
// @Value ("#{${employee.age}['two']}") //这样写也可以
private String employeeAgeTwo;
- b如果我们不确定,Map中的某个key是否存在,可以使用如下的SpEL表达式。如果key存在就获取对应的value,如果不存在就获得默认值31属性值注入完成之后,ageWithDefaultValue=31
1
2@Value ("#{${employee.age}['five'] ?: 31}")
private Integer ageWithDefaultValue;
SpEL结合 @Value注解读取系统环境变量
还可以使用SpEL表达式读取系统环境变量,示例如下,获取JAVA_HOME目录:
1
2@Value ("#{systemProperties['java.home']}")
private String javaHome;同理,可以获取系统用户工作目录
1
2@Value ("#{systemProperties['user.dir']}")
private String userDir;