在使用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> 


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐