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>

FakeWebSericeProxy有一个名为serviceHandlerwhich 的属性是 type IServiceHandler

问题是当我尝试运行 Mule 应用程序时,我不断收到以下消息:

java.lang.IllegalStateException:无法将类型 [java.lang.String] 的值转换为属性“serviceHandler”所需的类型 [ca.mpac.esb.component.webservice.IServiceHandler]:找不到匹配的编辑器或转换策略

我在这里读到Spring 会自动处理这样的情况,但它似乎不适用于我的情况。

4

1 回答 1

2

中的字段FakeWebServiceProxy似乎是 typeIServiceHandler而不是 type Class,如果您只想接受该类,请将属性的类型更改为Class。然后 Spring 应该将 String 值转换为适当的Class实例并注入它。

但是如果你想注入一个类型的对象实例IServiceHandler,你必须先创建一个 bean,然后将它注入到Fake_Proxybean 中:

<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 回答