springmvc控制层中通过@value获取配置文件properties值获取不到

我们项目通常会把applicationContext.xml配置文件这是加载spring相关配置,我们还会再配置一个springmvc相关配置spring-mvc.xml在第一个文件中我们引用了
<bean id="prop" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
     <property name="locations">
         <list>
             <value>classpath:properties/jdbc.propertiesvalue>
         list>
     property>
 bean>
加载properties配置文件进来,并新增扫描注入,
<context:component-scan base-package="com.service.*"/>

这时候就会扫描到你的service包含@value的注解的字段,这时候我们在service是可以通过

@value("${jdbc.url}")获取到我们配置数据,但是在Controller却获取不到,

原因是controller注册在spring-mvc.xml代表的Spring MVC的容器中,而service则注册在applicationContext.xml代表的Spring的容器中。

解决方法:spring-mvc.xml  加入

<bean id="prop" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
     <property name="locations">
         <list>
             <value>classpath:properties/jdbc.propertiesvalue>
         list>
     property>
 bean>
这时候再获取就可以了。

虽然这种方法不是特别好,但目前还没找到更好方法。有更好方法的请留言。

你可能感兴趣的:(Java,Web,Spring)