如何注入自动生成的类?

时间:2014-03-12 16:30:43

标签: java spring web-services

我使用CXF自动生成一些Web服务客户端类。结果类似于:

@WebServiceClient
public class TheService extends Service {
}

到目前为止,我将这些服务与new TheService()一起使用,但是当我使用Spring时,我现在也要注入我自动生成的类。编辑生成的类显然不是一个好主意,因为它们将来可能会重新生成(例如,在webservice更新上)。所以我不能用@Service注释它们。

但我怎样才能使用@Autowired private TheService service?这不可能吗?

1 个答案:

答案 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来处理更改。