Spring 使用 setter 方法进行依赖注入?

Spring dependency injection using setter method?

我有以下类.

public class SomeBeanClass implements SomeInterface{


    private IAccountHistory acctHistory;

    public void setAccountHistory(IAccountHistory  acctHistory) {
        this.acctHistory = acctHistory;
    }

}


public interface IAccountHistory{
 //some methods
}

public class AccountHistory implements IAccountHistory{
  //some logic
}

Spring配置:

<bean name="someBean" class="com.mypack.SomeBeanClass">
        <property name="AccountHistory">
            <bean class="com.mypack.AccountHistory"/>
        </property>
</bean>

在上面的spring配置中,属性名称是AccountHistory。但是 SomeBeanClass 没有任何名为 AccountHistory 的 属性。注射在这里如何工作?请帮助我。

But SomeBeanClass does not have any property named AccountHistory.

确实如此,就在这里:

public void setAccountHistory(IAccountHistory  acctHistory) {
    this.acctHistory = acctHistory;
}

属性 不是 字段。它是一个 Java bean 属性(有一些额外的命名余量)用 getter 或 setter.

表示

请将您的 XML 更新为

<bean id="accountHistory" class="com.package.AccountHistory" />
<bean id="someBean" class="com.mypack.SomeBeanClass">
     <property name="acctHistory" ref="accountHistory"/>          
</bean>

我建议使用注释,如果你有充分的理由使用 XML 那么请继续。

如果有帮助请告诉我。