我有一個關於組件掃描以及在Spring版本3.0.5.RELEASE中爲同一服務類別的XML配置中使用額外bean定義的問題。爲同一個類混合組件掃描和XML bean定義時的Spring行爲?
我創建了一個類 「爲MyService」 與
@Service("myService")
註釋並有同一類的bean定義,看起來像這樣:
<bean id="myService" class="....MyService" />
我把
System.out.println("MyService has been instantiated");
消息到MyService類的構造函數中。當我的應用程序啓動時,該消息將僅在控制檯上顯示一次。 Spring似乎足夠聰明,可以檢測到,只有一個ID爲「myService」的類的實例。
但是,即使當我改變了註釋
@Service("myService2")
並保留XML bean定義ID爲「爲myService」,類只會被實例化一次。
我的兩個問題是:
雖然這是我現在想要的行爲,是可能混淆XML bean定義和組件掃描一類,把它用實例化兩次不同的Bean ID?
有誰知道,春天機制是什麼「幕後」? Spring如何決定何時只實例化一次類? (也許它只是不允許爲同一類混用組件掃描和XML bean定義?)
非常感謝您的幫助!