@value用法详解

乔欣 Spring 发布时间:2023-03-12 22:57:24 阅读数:330 1
下文笔者讲述@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'}
 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/Spring/202303/6022.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者