2009-07-31 11 views
7

Tôi đang cố gắng sử dụng Springwx-xmlrpc cùng nhau. Vấn đề là XmlRpcClient có phương thức setConfig() không tuân theo đặc tả Java Bean: trình gỡ cài đặt và trình thu thập không sử dụng cùng một Lớp. Vì vậy, khiếu nại mùa xuân khi tôi có context.xml sau đây:Làm thế nào để sử dụng Spring để tiêm một đối tượng trong một setter không tuân theo đặc tả bean Java?

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

Nó nói: Bean property 'config' không thể ghi hoặc có phương pháp setter không hợp lệ. Liệu kiểu tham số của bộ setter có khớp với kiểu trả về của getter không?

Có cách nào để ghi đè điều đó không? Tôi biết tôi có thể viết một nhà máy cụ thể cho loại đậu này, nhưng có vẻ như với tôi rằng đó không phải là lần cuối cùng tôi tìm thấy loại vấn đề này. Tôi làm việc rất nhiều với mã di sản có chất lượng đáng ngờ ... Việc có thể sử dụng cấu hình Spring XML với nó sẽ là một trợ giúp tuyệt vời!

Trả lời

9

Viết một FactoryBean cho lớp đó và gọi nó là setter đúng.

+0

Không thực sự là câu trả lời tôi muốn có, nhưng dường như tôi không thể làm những gì tôi muốn trong XML, một FactoryBean là giải pháp dọn dẹp sạch sẽ nhất. – Guillaume

+1

FactoryBeans đang ở đó để cho phép bạn tích hợp các công cụ không tuân thủ đậu vào Spring. Đó không phải là cách giải quyết, đó là giải pháp dự định. – skaffman

+0

Tất cả các mục bean của bạn trong XML là cuối cùng được sử dụng để tạo ra một BeanFactory cụ thể. –

2

Tôi không nghĩ có cách nào để ghi đè điều này bằng cấu hình Spring XML.

Một giải pháp thay thế cho việc sử dụng nhà máy có thể là tạo lớp con của XmlRpcClient có trình gỡ bỏ và thiết lập phù hợp cho XmlRpcClientConfig (ví dụ: setClientConfig/getClientConfig). setClientConfig chỉ đơn giản gọi super.setConfig.

Các vấn đề liên quan