Spring @Value(“#{}“)和@Value(“${}“)

本文详细介绍了Spring框架中@Value注解的使用,包括$符号用于从配置文件中获取属性值,如`${jdbc.url}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1前言

        以前对spring中@Value没有太注意,看到同事把这个注解用的花里胡哨,我就感觉铁子牛逼666呀,迭代版本结束了,我就对这个注解研究研究,争取也牛逼666。

2 #号和$符的不同用法

2.1  $符的用法

总的来说就是:用于获取配置文件中的属性值;

2.1.1简单用法:

通常用于获取写在application.properties中的内容,例如在配置文件中:

jdbc.driverClass=com.mysql
jdbc.url=3306@local
jdbc.user=admin
  则在类中可以通过@Value("${jdbc.url}")来获取相应的值
 例如:
    @Value("${jdbc.url}")
    private String url;

2.1.2  冒号的用途

@Value("${jdbc.url:}")  

解释说明:我们有时候也是看到有人这样写的,这样写表示的意思是  如果配置文件中没有配置jdbc.url 变量,则取空值,而不是抛错

3.1  #号的用法

一句话表述:是SpEL表达式的值,可以表示常量的值,或者获取bean中的属性

3.1.1简单用法

@Value("#{1}")
    private String num;  //num=1


@Value("#{dataSource.url}") //获取bean的属性,bean(对象)为dataSource,属性为url
	private String jdbcUrl;

3.2 #号和$的组合用法

3.2.1举例

  • 配置文件

  •  代码读取
@Value("#{'${test.list}'.split(',')}")
    private List<String> testList;  //testList = [1, 2, 3, 4, 5, 6]

//  用:(冒号)时,当test.list.empty为null
 @Value("#{'${test.list.empty:}'.split(',')}")
    private List<String> testListEmpty;  //testListEmpty = []

 从上面的【代码读取】中可以看出当用  :(冒号),test.list.empty 可以不配置,但是用属性testListEmpty不为null,为空数组;下面代码解决此种情况。

@Value("#{'${test.list.empty:}'.empty ? null : '${test.list.empty:}'.split(',')}")  
private List<String> testList;  // null

 4.1完结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值