1

プログラムで 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回注入する方法は?

注釈を使用できないことに注意してください。

前もって感謝します。

4

1 に答える 1

1

わかったので、次を使用してください:

Object myDAORef = new RuntimeBeanReference("myDAO");

コンストラクターの引数として挿入します。

于 2013-06-06T15:50:59.287 に答える