How to use Spring to inject an object in a setter that doesnt follow the Java bean specification?

inversion-of-control, java, spring

Solution

Write a FactoryBean for that class and have it call the correct setter.

Problem

I am trying to use Spring and wx-xmlrpc together. The problem is that XmlRpcClient has a setConfig() method that doesnt follow the Java Bean spec : the setter and the getter dont use the same Class. So Spring complaints when I have the following 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> ``` It says : Bean property 'config' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? Is there a way to override that ? I know I could write a specific factory for this bean, but it seems to me that it is not the last time I find this kind of problem. I work a lot with legacy code of dubious quality ... Being able to use Spring XML configuration with it would be a great help !

Original source