プログラムで Bean を定義しようとしています。他の 2 つのサービス Bean で使用される 1 つの DAO Bean があります。DAO Bean は、コンストラクターの引数として挿入されます。
サービス Bean を構築するために DAO Bean への参照を取得するにはどうすればよいですか (<bean ref="myDAO"/> に類似)。
私のDAOは次のように定義されています(DefaultListableBeanFactory beanFactoryを使用):
final GenericBeanDefinition myDAODefinition = new GenericBeanDefinition();
myDAODefinition.setBeanClassName("com.xxx.dao");
final BeanDefinitionHolder myDAOHolder = new BeanDefinitionHolder(myDAODefinition,"myDAO");
BeanDefinitionReaderUtils.registerBeanDefinition(myDAOHolder, beanFactory);
次に、私のサービス Bean:
final GenericBeanDefinition srv1Definition = new GenericBeanDefinition();
srv1Definition.setBeanClassName("com.xxx.service1");
srv1Definition.setConstructorArgumentValues(new ConstructorArgumentValues() {
{
addGenericArgumentValue(*** ref to "myDAO" holder ***);
}
});
final BeanDefinitionHolder srv1Holder = new BeanDefinitionHolder(srv2Definition, "srv1");
と:
final GenericBeanDefinition srv2Definition = new GenericBeanDefinition();
srv2Definition.setBeanClassName("com.xxx.service2");
srv2Definition.setConstructorArgumentValues(new ConstructorArgumentValues() {
{
addGenericArgumentValue(*** ref to "myDAO" holder ***);
}
});
final BeanDefinitionHolder srv2Holder = new BeanDefinitionHolder(srv2Definition, "srv2");
「myDAO」ホルダーを参照して、他の定義で2回注入する方法は?
注釈を使用できないことに注意してください。
前もって感謝します。