1

インターフェイスを持つ Bean を指定しようとしていますIServiceHandler。インターフェイスを実装するものにプロパティを設定できるようにしたいと考えていIServiceHandlerます。たとえばGenericServiceHandler

Mule フローにある Bean コードは次のとおりです。

<spring:beans>
    <spring:bean id="Fake_Proxy" class="xxx.FakeWebServiceProxy" scope="prototype">
        <spring:property name="serviceHandler" value="xxx.GenericServiceHandler">
        </spring:property>
    </spring:bean>
</spring:beans>

FakeWebSericeProxyserviceHandlerタイプのと呼ばれるプロパティがありますIServiceHandler

問題は、Mule アプリケーションを実行しようとすると、次のメッセージが表示され続けることです。

java.lang.IllegalStateException: タイプ [java.lang.String] の値をプロパティ 'serviceHandler' の必要なタイプ [ca.mpac.esb.component.webservice.IServiceHandler] に変換できません: 一致するエディターまたは変換戦略が見つかりません

Spring はこのような状況に自動的に対処することをここで読みましたが、私の場合はうまくいかないようです。

4

1 に答える 1

2

のフィールドはFakeWebServiceProxytypeではIServiceHandlerなく typeClassのようです。クラスを受け入れるだけの場合は、プロパティの type を に変更してClassください。次に、Spring は String 値を適切なClassインスタンスに変換して注入する必要があります。

IServiceHandlerただし、代わりに型のオブジェクト インスタンスを注入する場合は、最初に Bean を作成し、次にそれを Bean に注入する必要がありFake_Proxyます。

<spring:beans>
    <spring:bean id="serviceHandlerBean" class="xxx.GenericServiceHandler" scope="prototype"/>
    <spring:bean id="Fake_Proxy" class="xxx.FakeWebServiceProxy" scope="prototype">
        <spring:property name="serviceHandler" ref="serviceHandlerBean"/>
    </spring:bean>
</spring:beans>
于 2013-07-10T16:03:29.057 に答える