spring mvc controller 获取不到@Value处理方法

来源:互联网 发布:软件团队建设管理方案 编辑:程序博客网 时间:2024/05/23 16:16



在使用spring mvc时,实际上是两个spring容器:

1,dispatcher-servlet.xml 是一个,我们的controller就在这里,所以这个里面也需要注入属性文件
org.springframework.web.servlet.DispatcherServlet
这里最终是使用WebApplicationContext parent =WebApplicationContextUtils.getWebApplicationContext(getServletContext()); 创建spring容器,代码在FrameworkServlet中

2,applicationContext.xml 是另外一个,也需要注入属性文件
org.springframework.web.context.ContextLoaderListener

在我们的service中可以拿到@Value注入的值,那是因为我们通常都会把获取属性文件定义在applicationContext.xml中,这样在 Controller中是取不到的,必须在dispatcher-servlet.xml 中把获取属性文件再定义一下


       <!-- 启用spring mvc 注解 -->       <context:annotation-config />              <!-- 设置使用注解的类所在的jar包,自动扫描包 --><context:component-scan base-package="com.linktech.*.*.controller" use-default-filters="false"><context:include-filter type="annotation"expression="org.springframework.stereotype.Controller" /><context:include-filter type="annotation"expression="org.springframework.web.bind.annotation.ControllerAdvice" /></context:component-scan>     <mvc:annotation-driven>        <mvc:argument-resolvers>            <bean class="com.linktech.shiro.rbac.core.CurrentUserMethodArgumentResolver"/>        </mvc:argument-resolvers>    </mvc:annotation-driven>                <bean id="propertyHolder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">         <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />          <property name="ignoreResourceNotFound" value="true" />          <property name="locations">              <list>  <value>classpath:system.properties</value>            </list>          </property>      </bean> 


1 0
原创粉丝点击