私はSpring 3.0.4を使用しています。私はマップ上で@Autowired注釈を使用するいくつかの豆を持っています。これらのマップはapplication-context.xmlファイル内で定義されます(これらのマップはいくつかのファクトリメソッドを使用して構築されるため)。Autowiring Mapが期待通りに動作しない
デバッガを使用すると、適切に(予想される)Bean IDを使用してマップが構築されることがわかります。しかし、autowiringプロセスが開始されると、作成されたばかりのidを持つBeanは見つからないと主張します。コードの
ワンピース:コンテキストXMLの
@Autowired
@Qualifier("dienstverbandMap")
private Map<String, String> dienstverbandMap;
ワンピース:私は私のクラスとコンテキストXMLその両方にjava.lang.Objectのに種類を変更
<bean class="java.util.HashMap" id="dienstverbandMap" factory-bean="someFactoryMethod" factory-method="getMappedMap"/>
重要なディテール、 は有線になります実際には、私は自分のコードでHashMapにキャストし、すべてを動作させることができます。しかし、それは私が明らかにしたいことではありません。
誰かが私が間違っていることを説明しましたか?
あなたはそうです。私のファクトリメソッドのシグネチャはMap <>を返し、それをHashMapに変更するとすべてが機能し始めました。ありがとう!! :) –
私は、工場は戻り値の型をMap(またはより具体的)にするInterfaceを実装していると考えました。しかし、それでもそれはうまくいかなかった。私はこれを動作させるためにインタフェースを変更しなければならなかった。 Yuk :) –