@Autowired注释不起作用

时间:2010-09-10 10:13:25

标签: spring autowired

我正在尝试像这样测试Autowire选项:

@ContextConfiguration(locations = { "classpath:applnContext.xml" })
public class Foo {
    @Autowired
    private Bar bar;

    public Bar getBar() {
        return bar;
    }

    public void setBar(final Bar bar) {
        this.bar = bar;
    }

    public static void main(final String[] args) {
        final Foo f = new Foo();
        System.out.println(f.getBar());
    }
}

和配置文件:

<?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-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <bean id="bar" class="entity.Bar"></bean>
    <context:annotation-config />

</beans>

但是Bar对象没有被注入。我在这里遗漏了什么或做错了吗?

请注意,我正在使用类上的注释指定applicationContext文件。

2 个答案:

答案 0 :(得分:4)

如果这是一个单元测试,就像看起来一样,添加

@RunWith(SpringJUnit4ClassRunner.class)

在你的applicationContext.xml中不要忘记这一点(虽然在这种情况下不是问题)

<context:component-scan base="org.basepackage" />

答案 1 :(得分:2)

@ContextConfiguration属性是org.springframework.test包的一部分,因此不会以您尝试使用它的方式工作。有关详细信息,请参阅Spring论坛上的this post