如何使用Spring在不遵循JavaBean规范的setter中注入对象?

如何使用Spring在不遵循JavaBean规范的setter中注入对象?,java,spring,inversion-of-control,Java,Spring,Inversion Of Control,我试着用和在一起。问题是有一个方法不遵循JavaBean规范:setter和getter不使用同一个类。因此,当我有以下context.xml时: <bean id="xmlRpcClient" class="org.apache.xmlrpc.client.XmlRpcClient"> <property name="config"> <bean class="org.apache.xmlrpc.client.XmlRpcClientCon

我试着用和在一起。问题是有一个方法不遵循JavaBean规范:setter和getter不使用同一个类。因此,当我有以下context.xml时:

<bean id="xmlRpcClient" class="org.apache.xmlrpc.client.XmlRpcClient">
    <property name="config">
        <bean class="org.apache.xmlrpc.client.XmlRpcClientConfigImpl">
            <property name="serverURL" value="http://example.net" />
        </bean>
    </property>
</bean>

它说:Bean属性'config'不可写或具有无效的setter方法。setter的参数类型与getter的返回类型匹配吗


有没有办法克服这个问题?我知道我可以为这个bean编写一个特定的工厂,但在我看来,这并不是我最后一次发现这种问题。我经常使用质量可疑的遗留代码。。。能够使用SpringXML配置将是一个很大的帮助

我认为没有任何方法可以使用SpringXML配置来覆盖这一点


使用工厂的另一种方法是生成XmlRpcClient的子类,该子类具有与XmlRpcClientConfig匹配的getter和setter(例如setClientConfig/getClientConfig)。setClientConfig只需调用super.setConfig。

为该类编写一个FactoryBean,并让它调用正确的setter。

这不是我想要的答案,但似乎我无法在XML中实现我想要的,FactoryBean是最干净的解决方法。FactoryBean允许您将不符合Bean的内容集成到Spring中。这不是一个解决方案,这是预期的解决方案。XML中的所有bean条目最终都用于创建一个具体的BeanFactory。