惊呆了,一个简单的@Value竟然能玩出这么多花样!
2023-04-18 16:48:35 时间
前言
对于从事java开发工作的小伙伴来说,spring框架肯定再熟悉不过了。spring给开发者提供了非常丰富的api,满足我们日常的工作需求。
如果想要创建bean实例,可以使用@Controller、@Service、@Repository、@Component等注解。
如果想要依赖注入某个对象,可以使用@Autowired和@Resource注解。
如果想要开启事务,可以使用@Transactional注解。
如果想要动态读取配置文件中的某个系统属性,可以使用@Value注解。
等等,还有很多。。
今天咱们重点聊聊 @Value
注解,因为它是一个非常有用,但极其容易被忽视的注解,绝大多数人可能只用过它的一部分功能,这是一件非常遗憾的事情。
所以今天有必要和大家一起,重新认识一下 @Value
。
@Value("#{${susan.test.map}}")
private Map<String, String> map;
配置文件是这样的:
susan.test.map={"name":"苏三", "age":"18"}
这种用法跟上面稍微有一点区别。
设置默认值的代码如下:
@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:
@Value("#{T(java.io.File).separator}")
private String path;
可以注入系统的路径分隔符到path中。
示例2:
@Value("#{T(java.lang.Math).random()}")
private double randomValue;
可以注入一个随机数到randomValue中。
相关文章
- eos源码赏析(二):eos代码主分支架构
- eos源码赏析(三):eosd初始化
- eos源码赏析(四):基于boost::asio的httpserver架构
- eos源码赏析(五):EOS智能合约入门之无崖子传功虚竹
- eos源码赏析(六):EOS智能合约入门金叶子兑换碎银
- eos源码赏析(七):EOS智能合约入门之共识机制初探
- 窃取Chrome浏览器密码
- eos源码赏析(八):EOS智能合约入门之区块生产
- eos源码赏析(九):EOS智能合约入门之区块打包和广播机制
- eos源码赏析(十):EOS智能合约入门之区块上链
- eos源码赏析(十一):EOS之从“狼人游戏”看智能合约调用及权限分配(上)
- eos源码赏析(十二):EOS之从“狼人游戏”看智能合约调用及权限分配(下)
- 从传统采购向SRM数字采购转型,大宗商品企业实现采购成本有效控制
- eos源码赏析(十五):EOS源码调试及跟踪(上)
- eos源码赏析(十七):EOS源码调试及跟踪(下)
- 煤炭行业DMS经销商系统建立数字化渠道体系,构建企业核心竞争力
- 水产行业商业供应链协同平台革新水产供应链模式,提升管理效率
- eos源码赏析(十八):EOS智能合约之合约内ram购买及资源抵押
- eos源码赏析(二十):EOS智能合约之push_transaction的天龙八“步”
- eos源码赏析(二十一):EOS智能合约之区块签名的天龙八“步”