@Value的用法


image-20240107172454447

@value的使用场景

  1. bean声明的变量

  2. setter方法注入

    public static class MyValues {
        private String timeZone;
        @Value("#{systemProperties['user.timezone']}")
        public void setTimeZone(String timeZone) {
            this.timeZone = timeZone;
        }
    }
    
  3. 构造方法或其它方法的入参

    public class MyValues {
        private String timeZone;
        @Autowired
        public void configure(@Value("#{systemProperties['user.timezone']}") String timeZone) {
            this.timeZone = timeZone;
        }
    }
    

@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数据来源

配置文件

@Value(“${xxxx}”)注解从配置文件读取值的用法

application.yaml文件

user:
    userName: LayZhang
    sex: male

在使用上述配置文件时,可以直接使用@Value(“${user.userName}”)。

如果@Value(“${user.userName:ZhangL}”),指定了name的值为ZhangL,当从配置文件中获取不到userName时,则userName值为ZhangL

application.properties文件

spring.mail.host = smtp.sina.com
spring.mail.port = 465
spring.mail.protocol = smtps
spring.mail.username = example@sina.com
spring.mail.password = 123

在使用上述配置文件时,可以直接使用@Value(“${spring.mail.username}”)。

常量

@Value("LayZhang")
privat String name;

name值为LayZhang

bean属性,系统属性,表达式

@Value(“#{}”)

//操作系统属性
@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;

参考文献

https://blog.csdn.net/mumuwang1234/article/details/117572281

e()}")
private String className;


# 参考文献

https://blog.csdn.net/mumuwang1234/article/details/117572281

https://www.java265.com/JavaFramework/Spring/202303/6022.html
  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值