beanの@Bean
タイプ定義を使用している間、SpringのBean継承を使用したいと思います。具体的には、@Beanアノテーションを使用して子Beanを設定する方法
public class Serwis {
Integer a;
Integer b;
Map<Integer, Integer> m = new HashMap<>();
}
をしましょうとXMLベースの構成は次のようになりますと仮定します。豆absSerwis
のディープコピーを含む豆defSerwis
を作成し
<bean id="absSerwis" class="service.Serwis"
p:a="11">
<property name="m">
<map>
<entry key="111" value="111"></entry>
</map>
</property>
</bean>
<bean id="defSerwis" parent="absSerwis"
p:b="12"
/>
。特にm
の内容がコピーされます。今、私はそれを行うための適切な方法は何か
@Autowired
@Qualifier("absSerwis")
private Serwis absSerwis;
@Bean
public Serwis cccSerwis() {
Serwis s = new Serwis();
BeanUtils.copyProperties(absSerwis, s); //wrong; does shallow copy
return s;
}
のように、@Bean
アノテーションを使用してdefSerwis
のような豆を定義したいと思いますか?その後、
親が何であるかを理解するのはちょっとです。それは単純に両方のBean定義をマージし、その後にBean定義をマージします。それは深く/新鮮なコピーを作成しません、そのようなものはありません。 'absSerwis'(' @ Bean'でアノテーションを付けないでメモ!)を作成するメソッドを作成してください。次に、2つの '@ Bean'メソッドを作成します.1は元の' absSerwis'を公開し、もう1つはいくつかのプロパティを追加します。 –
@ M.Deinumは「少し離れています。 xmlの 'parent ='がどのように動作するかを少し詳しく説明する場所を指摘してください。 –
私の答え(およびSpringリファレンスガイドへのリンク)を参照してください。 –