@value用法详解
下文笔者讲述@value方法的功能详解说明,如下所示
value注解的三种使用方式
1.直接写值@Value("string value") 这种方式就是直接把要注入的值字面量写在注解里 比较少用 如果要写死在注解里 那直接定义变量的时候,写固定即可 2.占位符@Value("${myvalue}") 这种方式最常用 通过属性名 将值注入进来。 如果可能为空,需要设置value注解默认值 用法:@Value("${unknown.param:defaultValue}") 3.SpEL表达式@Value("#{someBean.someValue}") SpEL表达式很强大,还能在属性值基础上加以运算等。 如果可能为空 需要设置默认值 用法:@Value("#{systemProperties['unknown'] ?: 'defaultValue'}") 另: 占位符形式和SpEL表达式是可以结合使用的,如下: @Value("#{'${listOfValues}'.split(',')}") private List valuesList;
@value注解的使用场景
1.bean声明的变量 2.setter方法注入 3.构造方法或其它方法的入参例
//bean声明的变量 public static class MyValues { @Value("#{systemProperties['user.timezone']}") private String timeZone; } //setter 方法中 public static class MyValues { private String timeZone; @Value("#{systemProperties['user.timezone']}") public void setTimeZone(String timeZone) { this.timeZone = timeZone; } } //方法入参 public class MyValues { private String timeZone; @Autowired public void configure(@Value("#{systemProperties['user.timezone']}") String timeZone) { this.timeZone = timeZone; } }例
//直接写值 @Value("plainText") private String plainText; //普通形式-字符串 @Value("${myValues.string}") private String myValuesString; //普通形式-数字 @Value("${myValues.int}") private int myValuesInt; //普通形式-布尔类型 @Value("${myValues.boolean}") private boolean myValuesBoolean; //数组 @Value("${myValues.array}") private String[] myValuesArray; //Map @Value("#{${myValues.map}}") private Map<String, String> myValuesMap; //操作系统属性 @Value("#{systemProperties['user.timezone']}") private String timeZone; //表达式结果 @Value("#{ T(java.lang.Math).random() * 100.0 }") private double randomNumber; //其它bean的属性 @Value("#{propertiesApplication.class.getName()}") private String className; //文件资源 @Value("classpath:larry.txt") private Resource file; //URL资源 @Value("https://www.github.com") private Resource url; 其中,配置文件application.properties内容为: myValues.int=99 myValues.boolean=true myValues.string=Larry myValues.array=my,name,is,larry myValues.map={name: 'Larry', age: '16', city: 'ShenZhen'}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。