前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >惊呆了,一个简单的@Value竟然能玩出这么多花样!

惊呆了,一个简单的@Value竟然能玩出这么多花样!

作者头像
用户1263954
发布2021-12-29 08:59:43
2340
发布2021-12-29 08:59:43
举报
文章被收录于专栏:IT技术精选文摘

前言

对于从事java开发工作的小伙伴来说,spring框架肯定再熟悉不过了。spring给开发者提供了非常丰富的api,满足我们日常的工作需求。

如果想要创建bean实例,可以使用@Controller、@Service、@Repository、@Component等注解。

如果想要依赖注入某个对象,可以使用@Autowired和@Resource注解。

如果想要开启事务,可以使用@Transactional注解。

如果想要动态读取配置文件中的某个系统属性,可以使用@Value注解。

等等,还有很多。。

今天咱们重点聊聊 @Value注解,因为它是一个非常有用,但极其容易被忽视的注解,绝大多数人可能只用过它的一部分功能,这是一件非常遗憾的事情。

所以今天有必要和大家一起,重新认识一下 @Value

代码语言:javascript
复制
@Value("#{${susan.test.map}}")
private Map<String, String> map;

配置文件是这样的:

代码语言:javascript
复制
susan.test.map={"name":"苏三", "age":"18"}

这种用法跟上面稍微有一点区别。

设置默认值的代码如下:

代码语言:javascript
复制
@Value("#{'${susan.test.map:}'.empty ? null : '${susan.test.map:}'}")
private Map<String, String> map;

7 EL高端玩法

前面我们已经见识过spring EL表达式的用法了,在设置空的默认值时特别有用。

其实,empty方法只是它很普通的用法,还有更高端的用法,不信我们一起看看。

一下子有没有豁然开朗的感觉,有了这些,我们可以通过@Value注解,实现更多的功能了,不仅仅限于注入系统属性。

7.3 静态类

前面的内容都是基于bean的,但有时我们需要调用静态类,比如:Math、xxxUtil等静态工具类的方法,该怎么办呢?

答:用T加括号。

示例1:

代码语言:javascript
复制
@Value("#{T(java.io.File).separator}")
private String path;

可以注入系统的路径分隔符到path中。

示例2:

代码语言:javascript
复制
@Value("#{T(java.lang.Math).random()}")
private double randomValue;

可以注入一个随机数到randomValue中。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT技术精选文摘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 7 EL高端玩法
    • 7.3 静态类
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档