java - 如何注入(inject)自动生成的类?

标签 java spring web-services

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

@WebServiceClient
public class TheService extends Service {
}

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

但是我怎样才能使用@Autowired private TheService服务?难道不可能吗?

最佳答案

每次生成客户端类时,如果有可能更改类名(我在从 Axis 1.1 升级到 Axis 2 进行 Web 服务客户端 stub 生成时遇到了此类名称更改),那么您可以尝试使用 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;
      ....
    }

唯一需要进行更改的地方是 id="clientStub"的 bean 定义的类(具有生成的类名) 因此,对 TheService className 的任何更改都将被吸收,并且您不必在访问此 clientstub 的类中进行更改,因为 Spring 会通过 id 处理更改。

关于java - 如何注入(inject)自动生成的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22357931/

相关文章:

java - Eclipse 项目属性/首选项页面 : How to find event of opening preference page in project property window(Eclipse)

java - CDI 可以在注入(inject)时扫描配置的文件夹中的 Bean 吗? (热部署)

Java - 使用条件在 super 方法中指定参数

ruby-on-rails - 如何在 Rails 应用程序中设计/组织/架构移动 Web 的开发?

java - jaxb 是否有可能在基于 xsd 的验证过程中显示更多错误

spring - 在创建 spring 批处理 bean 时,获取 "Scope ' 步骤'对于当前线程无效”

java - 为什么我的 Spring Boot 应用程序在 Heroku 中部署后就无法启动

java - neo4j:找不到依赖关系的合格 bean 类型

Java SOAP 请求作为 Web 服务?

java - ejb3端点Web服务jboss 7抛出非法状态异常