私は最近、SpringのXML構成をJavaの構成に切り替えて、奇妙な問題に直面しています。Spring Javaのコンフィグレーションされたマップをラップする
XML設定されました:
<util:map id="myMap">
<entry key="a" value="aValue"/>
<entry key="b" value="bValue"/>
<entry key="c" value="cValue"/>
</util:map>
<bean id="myBean" class="my.MyClass">
<property name="myMap" ref="myMap"/>
</bean>
Java構成は次のとおりです。
@Bean
public Map<String, Object> myMap() {
Map<String, Object> myMap = new HashMap<>();
myMap.put("a", "aValue");
myMap.put("b", "bValue");
myMap.put("c", "cValue");
return myMap;
}
@Bean
public MyClass myBean(@Qualifier("myMap") final Map<String, Object> myMap) {
MyClass myBean = new MyClass();
myBean.setMyMap(myMap);
return myBean;
}
どちら豆は異なるファイルで宣言されている、私は、読みやすくするためにここでそれらをグループ化。このマップには、文字列だけでなく、参照も含まれています。
私は2番目のBeanにmyMap
を使用することができることを期待する代わりに、春には、次のマップ注入
:
{ myMap = { a=aValue, b=bValue, c=cValue } }
春が別のマップにマップをラップ理由を私は理解していないが、それはdoesnの理由XML構成でも同じように動作します。
アイデア?
@Resourceをここで使用しているように使用することもできます:http://stackoverflow.com/questions/13913752/spring-cant-autowire-map-bean? – Walfrat
残念ながら、これらのBeanは異なるファイル/異なるモジュールに存在するため、 '@ Resource'ソリューションは使用できません。 '@ Resource'を使用すると、モジュールのコンテキスト間に循環参照ループが発生します。 –