我有一個用? 和Manager注釋的類@Component@Scope
@Component?
@Scope(value = "prototype")?
public class Manager {
...
}
Manager所以我希望每次請求 bean 時都會創建一個新的 bean 實體。
然后我有一個Adapter使用這個Managerbean的類。要使用它,我有兩種 Autowire 方式:1. 在屬性上或 2. 在建構式上:
@Component?
public class Adapter {
@Autowired?
Manager m_Manager;
...
}
或者
@Component?
public class Adapter {
Manager m_manager;
@Autowired?
public Adapter(Manager manager) {
m_manager = manager;
}
...
}
由于Adaptor該類是一個單例 bean,所以無論@Autowire是Manager在屬性上還是在建構式上,都只會創建一個Manager? 意思Manager是bean實際上被用作單例bean而不是原型bean,對嗎?
uj5u.com熱心網友回復:
@Autowire 的行為方式與 ApplicationContext.getBean 相同
它為每個自動裝配的實體創建一個原型 bean。可以看到兩個單例中的原型物件有不同的識別符號
所以每個單例都有自己的原型實體。如果您在建構式或欄位中使用@Autowire 執行此操作,則沒有任何區別。在建構式上執行 Autowire 只是避免注釋重復的更方便的方法。
PS要定義范圍最好使用
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
uj5u.com熱心網友回復:
如果您沒有任何其他注入點,即注入一個 Manager 實體,那么您在應用程式背景關系中將只有一個實體,這是正確的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/463839.html
