クラスにハッシュマップを挿入しようとしています。この投稿によると: utilスキーマを使用してリストを自動配線すると、マップではなく使用する必要があるNoSuchBeanDefinitionExceptionが発生します。@Resource
@Autowire
私のコードは次のようになります:
@Configurable
public class MyClass
{
@Resource(name="myMap")
private Map<String,String> myMap = new HashMap<String, String>();
私の設定は次のようになります:
<context:annotation-config/>
<context:component-scan base-package="com.MyClass"/>
<util:map id="myMap"
key-type="java.lang.String"
value-type="java.lang.String">
<entry key="k1" value="v1"/>
<entry key="k2" value="v2"/>
</util:map>
アプリケーションは正常に起動しますが、を参照するコードを実行しようとするとMyClass
、次のWebSphereエラーが発生します。
CNTR0035E:EJBコンテナーがcom.ibm.wsspi.injectionengine.InjectionExceptionをキャッチしました:メタデータのバインディングの処理に失敗しました com.ibm.ws.injectionengine.InjectionEngineImpl.processBindings(InjectionEngineImpl.java:529)で com.ibm.ws.injectionengine.InjectionEngineImpl.processInjectionMetaData(InjectionEngineImpl.java:322)で com.ibm.ws.util.ComponentNameSpaceHelper.populateJavaNameSpace(ComponentNameSpaceHelper.java:806)で ..。 原因:com.ibm.wsspi.injectionengine.InjectionException:CWNEN0044E:MyServiceコンポーネント用に定義された以下のリソース参照[myMap]のリソース参照バインディングが見つかりませんでした。 com.ibm.wsspi.injectionengine.InjectionProcessor.collectInjectionNBindingData(InjectionProcessor.java:1042)で com.ibm.ws.injectionengine.InjectionEngineImpl.processBindings(InjectionEngineImpl.java:516)で ...52もっと そして、com.ibm.ejs.container.ContainerExceptionをスローしています:BeanMetaDataインスタンスの初期化に失敗しました。ネストされた例外は次のとおりです。 com.ibm.wsspi.injectionengine.InjectionException:メタデータのバインディングの処理に失敗しました。
WebSphereのクラスにマップを挿入する方法はありますか?
(Spring 2.5、WebSphere 7を使用)
以前、私はこのコードで名前による自動配線を試しました:
@Configurable(autowire=Autowire.BY_NAME, preConstruction=true)
public class MyClass
{
@Qualifier("myMap")
@Autowired(required=true)
private Map<String,String> myMap = new HashMap<String, String>();
そしてこの設定で:
<context:annotation-config/>
<context:component-scan base-package="com.MyClass"/>
<util:map id="myMap"
key-type="java.lang.String"
value-type="java.lang.String">
<entry key="k1" value="v1"/>
<entry key="k2" value="v2"/>
</util:map>
その結果、自動配線しようとしているフィールドはnullになります。