Как использовать Spring для внедрения объекта в сеттер, который не соответствует спецификации Java-бина? - PullRequest
7 голосов
/ 01 августа 2009

Я пытаюсь использовать Spring и wx-xmlrpc вместе. Проблема в том, что XmlRpcClient имеет метод setConfig () , который не соответствует спецификации Java Bean: установщик и получатель не используют один и тот же класс. Поэтому Spring жалуется, когда у меня есть следующий 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' недоступно для записи или имеет недопустимый метод установки. Соответствует ли тип параметра установщика возвращаемому типу получателя?

Есть ли способ отменить это? Я знаю, что мог бы написать конкретную фабрику для этого компонента, но мне кажется, что это не последний раз, когда я нахожу такую ​​проблему. Я много работаю с устаревшим кодом сомнительного качества ... Возможность использовать конфигурацию Spring XML с ним была бы очень полезна!

Ответы [ 2 ]

9 голосов
/ 01 августа 2009

Напишите FactoryBean для этого класса и попросите его вызвать правильный установщик.

2 голосов
/ 01 августа 2009

Я не думаю, что есть какой-либо способ переопределить это, используя конфигурацию Spring XML.

Альтернативой использованию фабрики может быть создание подкласса XmlRpcClient, который имеет совпадающие методы получения и установки для XmlRpcClientConfig (например, setClientConfig / getClientConfig). setClientConfig просто вызовет super.setConfig.

...