这是最近一个小伙找上来问的问题, 我初一看还没看出来啥猫腻,后面认真一想,决定也写下来记录下,给其他初学者也知道下。
原先思路错误代码:
这个小伙想利用 @Value 注解, 给这个属性 赋值,default这个标签在配置文件不存在,所以触发了 : 号 后面的 默认 true 赋值。
思路确实可以,但是结果不如意。
他是怎么使用的 :
通过new出来 ,想得到一个默认值, 但是没有生效:
为什么呢?
首先我们来先看看 @Value 的玩法 :
首先 是 要让使用@Value的这个类,变成spring的bean
所以这时候 用了 @Component, 非常对
然后呢 ,就是不能是关键字static修饰 的 (一旦修饰就不可变值了)
那么这么看来, 为啥小伙没有成功?
可以看到,原因很简单,因为这个@Value 是在spring在bean初始化的时候才触发, 代码里面通过new的方式,那肯定是不能成功的。
所以这样使用的话,需要 通过注入bean的方式才能 触发@Value的默认值 :
结果:
那么假如我们就是想通过 new的 方式,也能有默认值呢?
那也简单,其实也就是常用的几种方式,简单列一下:
① 直接赋默认值
② 构造方法触发赋默认值
好了该篇就到这