0
當setter和constructor注入應用於同一個類時,我需要知道什麼是首選順序。Spring Bean容器中的首選順序
我寫了一個演示代碼,發現它優先使用setter注入。
<bean id="wolf" class="com.sac.DI.Wolf" />
<bean id="lion" class="com.sac.DI.Lion" />
<bean id="zoo" class="com.sac.DI.Zoo">
<constructor-arg ref="lion" />
<property name="wild" ref="wolf" />
</bean>
Zoo bean如下所示。
package com.sac.DI;
public class Zoo {
private WildAnimal wild;
public Zoo(WildAnimal animal) {
this.wild = animal;
}
public void setWild(WildAnimal wild) {
this.wild = wild;
}
public void testSound() {
System.out.println(wild.sound());
}
}
所以我的查詢是:
- 始終是它被優先考慮或有一些定義它屬性的設置注射。
- 爲什麼二傳手注射優先於構造器注入
爲什麼。因爲首先一個對象被引用到'lion'中,那麼setter被稱爲覆蓋之前設置的'lion'到'wolf' ..它與喜好或偏好無關,這是你的方式配置了一些東西。 –
不,如果我先把構造函數注入它再次給予setter注入 –
再次,這就是你如何配置的東西(它與排序無關,並且從不會與排序有關)以及java如何工作。 ..你如何在非構造對象上調用setter ... –