在Spring开启Autowire

时间:2014-09-15 09:31:16

标签: java spring spring-mvc

我没有

检查我的申请
<context:spring-configured/>

并且@Autowire正常工作。我不知道容器如何在没有

的情况下自动注入
<context:spring-configured/>

这是我的application-context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-
    mvc-3.0.xsd http://www.springframework.org/schema/tx  http://www.springframework.org/schema/tx/spring-tx.xsd">

    <context:component-scan base-package="com.somepackage" />
    <tx:annotation-driven transaction-manager="transactionManager" />
    <mvc:annotation-driven conversion-service="conversionService" />

    <bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />

    <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass">
            <value>org.springframework.web.servlet.view.tiles3.TilesView</value>
        </property>
    </bean>

    <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
        <property name="definitions">
            <list>
                <value>/WEB-INF/tiles.xml</value>
            </list>
        </property>
    </bean> 

    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
       <property name="converters">
           <set>
               <bean class="com.somepackage.converter.CategoryConverter"/>
           </set>
       </property>
    </bean>    
</beans>

2 个答案:

答案 0 :(得分:1)

由于

,自动装配工作正常

context:component-scan

查看this javadoc

答案 1 :(得分:0)

您需要在配置XML中添加上下文模式以使用@Autowired注释,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-2.5.xsd">

 <context:annotation-config/>

有关详情,请查看以下链接:

3.11. Annotation-based configuration

另外,检查context:annotation-config vs context:component-scan之间的差异,由于上下文的原因,你正在获得@Autowiring:在你的上下文模式中使用了组件扫描。