我有一个像
这样的课程class A {
@Autowired
B b;
}
A a = new A()
我发现b
未自动装配
我已经<context:component-scan base-package="*">
,还有其他什么遗失?
答案 0 :(得分:4)
您必须从bean工厂获取bean,而不是直接创建实例。
例如,以下是如何使用注释执行此操作。首先,您需要为您的班级声明添加更多内容:
// Annotate to declare this as a bean, not just a POJO
@Component
class A {
@Autowired
B b;
}
接下来,每个应用程序执行一次 :
AnnotationConfigApplicationContext factory =
new AnnotationConfigApplicationContext();
factory.register(A.class);
factory.register(B.class);
// Plus any other classes to register, or use scan(packages...) method
factory.refresh();
最后,您现在可以获取bean的实例:
// Instead of: new A()
A a = factory.getBean(A.class);
答案 1 :(得分:3)
如果Spring将它实例化为bean,Spring将只会自动装配A
对象。如果你实例化自己的,那么Spring对此一无所知,所以没有任何东西可以自动装配。