时间:2021-05-19
我们学习过将配置信息,通过@Value()的方法注入到对象的变量。这是由于对象是由spring来托管的。那么非spring如果,我们需要在静态方法中,使用配置文件中的值,又该怎么做呢?
传统的错误作法
application.properties
spring.redis.host=test@Componentpublic class RedisServiceImpl implements RedisService { ... @Value("${spring.redis.host}") static public String host; @Value("${spring.redis.port}") static public Integer port; ... static public JedisPool getJedisPool() { if (RedisServiceImpl.host == null) { logger.info("host 未注入"); } }控制台打印为: "host 未注入
正确的方法
控制台正确的打印了注入的值。
原因猜想
spring进行组件扫描,遇到@Component时,初始化对象 RedisServiceImpl, 初始化过程中,扫描到@Value注解,将值注入给方法。
接着,方法将值传给了RedisServiceImpl类,故RedisServiceImpl有值 -- 正解。
如果将@Value(),直接加到静态私有变量上,则在初始化对象时,由于静态私有变量属于类,所以spring未对类进行操作 -- 错误。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了springboot静态变量注入配置文件的具体代码,供大家参考,具体内容如下spring静态变量注入spring中不支持直接进行静态变量值的
昨天在使用@Value注解给静态变量赋值的时候,发现静态变量的值始终是null。后来搜索一下得知其中原因,SpringBoot不允许/不支持把值注入到静态变量中
静态变量和成员变量的区别:A:所属不同静态变量:属于类,类变量成员变量:属于对象,对象变量,实例变量B:内存位置不同静态变量:方法区的静态区成员变量:堆内存C:
类的实例化顺序父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量(父类实例成员变量)、父类构造函数、子类非静态变量(子类实例成员变量)、
本文实例讲述了PHP中静态变量的使用方法。分享给大家供大家参考,具体如下:1.定义静态变量publicstatic$endpoint,$accessKeyId,