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

本文解析了Spring MVC中两个Spring容器的工作原理:dispatcher-servlet.xml与applicationContext.xml。阐述了如何在不同配置文件中注入属性文件,并说明了在Service层和Controller层获取这些值的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值