我使用CXF
自动生成一些Web服务客户端类。结果类似于:
@WebServiceClient
public class TheService extends Service {
}
到目前为止,我将这些服务与new TheService()
一起使用,但是当我使用Spring
时,我现在也要注入我自动生成的类。编辑生成的类显然不是一个好主意,因为它们将来可能会重新生成(例如,在webservice更新上)。所以我不能用@Service
注释它们。
但我怎样才能使用@Autowired private TheService service
?这不可能吗?
答案 0 :(得分:1)
每次生成客户端类时,如果有可能更改类名(我在从Axis 1.1升级到Axis 2以进行Web服务客户端存根生成时遇到此类名更改),那么您可以使用Spring XML进行尝试配置而不是注释。
<bean id="clientStub" class="com.package1.TheService">
....
</bean>
在您要访问它的类中引用此id(clientstub)。
<bean id="accessingClass" class="com.package2.AccessingClass">
<property name="service" ref="clientStub" />
</bean>
Public class AccessingClass{
private Service service;
....
}
只需要在bean定义的类(带有生成的类名)中进行更改,其中id =&#34; clientStub&#34; 因此,对TheService className的任何更改都将被吸收,您无需在访问此clientstub的类中进行更改,因为Spring会通过id来处理更改。