FactoryBean を実装しようとしています。これが私のコードです:
public class SkilledEmployee extends AbstractFactoryBean<Employee> {
private Employee emp;
private Skill skill;
public SkilledEmployee(Employee emp, Skill skill) {
this.emp = emp;
this.skill = skill;
}
public Class<Employee> getObjectType() {
return Employee.class;
}
protected Employee createInstance() throws Exception {
Employee emp1 = new Employee(emp);
emp1.addSkill(skill);
return emp1;
}
public boolean isSingleton() {
return true;
}
}
そして、これが私が自分の豆を宣言した方法です:
<bean id="skilledEmployee1" class="com.pramati.spring.SkilledEmployee">
<constructor-arg ref="subordinate3"/>
<constructor-arg ref="singing"/>
</bean>
<bean id="skilledEmployee2" class="com.pramati.spring.SkilledEmployee">
<constructor-arg ref="subordinate2"/>
<constructor-arg ref="singing"/>
</bean>
これらの Bean をコンテキストから取得すると、オブジェクトをシングルトンとして宣言したにもかかわらず、別の Bean を取得していることがわかります。
私は FactoryBean を理解しようとしていますが、これは有効なユースケースではなく、設計上の失敗であることを知っています。しかし、なぜこのように振る舞うか知りたかったのですか?誰か説明してくれませんか?