我有類像爲什麼以下內容不適用於自動裝配
class A {
@Autowired
B b;
}
A a = new A()
我發現b
不是自動裝配的
我已經做過<context:component-scan base-package="*">
,還有其他什麼遺失?
我有類像爲什麼以下內容不適用於自動裝配
class A {
@Autowired
B b;
}
A a = new A()
我發現b
不是自動裝配的
我已經做過<context:component-scan base-package="*">
,還有其他什麼遺失?
您必須從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();
最後,您現在可以得到的情況下,豆:如果Spring實例化它作爲一個bean
// Instead of: new A()
A a = factory.getBean(A.class);
我注意到你也在使用XML配置。沒關係;只需獲取應用程序上下文(也是bean工廠)並使用它的'getBean'方法。 – 2011-05-04 08:03:34
Spring將自動裝配僅在A
對象。如果你實例化自己,Spring對此一無所知,所以沒有任何東西會自動裝配。
有沒有關於B類定義的任何註釋? – naiquevin 2011-05-04 07:50:30