spring使用@Value("${key}")获取不到.properties指定变量值的解决方法

先来描述一下我的问题:

我的项目是一个javaweb项目,在web.xml中定义了如下spring的上下文和springmvc的上下文,内容如下:


在spring上下文中定义了自动扫描的包和properties的位置:


在springmvc中也定义了自动扫描的包:


然后在一个由@Component定义的javabean中使用@Value("${key}")注解获取在.properties文件中定义的属性获取不到值。

解决方法有两种:

一、在springmvc文件中也加上.properties文件的bean定义,即把下面这段代码从spring配置中拷贝一份到springmvc的配置文件中。


感觉这种方法不是很好,感觉配置有点重复。建议使用第二种解决方法

二、在spring的配置文件和springmvc的配置文件自动扫描中都加上过滤,即spring的配置文件排除@Controller这种bean的扫描,而springmvc的配置文件中只扫描@Controller的组件。

spring的配置:


springmvc的配置:


感觉这种方法才是合理的。

关于这种配置原因导致的问题,我想是因为我对于spring的运行机制还不够了解的原因。虽然也搜索了下spring上下文和springmvc上下文的关系说是父子上下文的关系,但我依然不清楚其中原由,后面如能够了解清楚,再来这篇文章加以补充说明吧。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Top