问题: 在使用@Service 注解标注的类中 的成员变量使用@Value 注解,配置没有从online.properties文件中获取到,如下图

ssm 框架下使用@Value 使用失效问题记录

现象: lotteryAddress, isOnline 的值不能从配置文件中获取到

原因: 有两点综合造成,任意改一种一个均能修改该bug

1.在类上使用@Service 注解说明online.properties配置文件需要被Spring的配置中心读取到,所以需要在Spring的xml配置中说明online.properties的文件位置 (之前我没有配置,后面说明原因) 如图

ssm 框架下使用@Value 使用失效问题记录

2.将@Service 改成@Componet ,一开始写代码时是使用@Componet注解,使用一直正常,在修改一个bug时候,将@Componet改成为@Service,就发现配置不能注入了. 造成这个问题原因是:在我们系统的配置中,@Service注解只在Spring扫描,在spring扫描时不能读取到online.properties配置文件, 为什么改成@Componet就是读取到配置online.properties,是springmvc会再次扫描被@Componet标志的类,在springmvc中将online.properties对应字段注入.

 

以上,未描述清楚地方,请下方留言,尽快回复.

相关文章: