Java 除了WebServiceGatewaySupport#getWebServiceTemplate(),还有其他方法可以在Spring Boot中获取WebServiceTemplate吗?

Java 除了WebServiceGatewaySupport#getWebServiceTemplate(),还有其他方法可以在Spring Boot中获取WebServiceTemplate吗?,java,spring,spring-boot,webservices-client,webservicetemplate,Java,Spring,Spring Boot,Webservices Client,Webservicetemplate,Spring提供了org.springframework.ws.client.core.support.WebServiceGatewaySupport类,该类根据 方便的超级类,用于需要Web服务访问的应用程序类 该类显然是为扩展而设计的。它是抽象的,所以它不能被实例化为bean,所以我不能使用 但是,当我继承该类时,Spring开始这样抱怨: response = getWebServiceTemplate().marshalSendAndReceive( ur

Spring提供了
org.springframework.ws.client.core.support.WebServiceGatewaySupport
类,该类根据

方便的超级类,用于需要Web服务访问的应用程序类

该类显然是为扩展而设计的。它是
抽象的
,所以它不能被实例化为bean,所以我不能使用

但是,当我继承该类时,Spring开始这样抱怨:

response = getWebServiceTemplate().marshalSendAndReceive(
               uri, request, new SoapActionCallback(soapAction));
[WARN]org.springframework.framework.CglibAopProxy-无法代理接口实现方法[public final void org.springframework.ws.client.core.support.WebServiceGatewaySupport.afterPropertiesSet()抛出java.lang.Exception]<强>因为它被标记为最终< /强>:考虑使用基于接口的JDK代理代替! 各种各样的资源(例如)说

如果您不是通过代理实际调用xxx方法,则可以安全地忽略该警告

然而,我不高兴在应用程序中有任何警告。习惯于忽略警告通常是不好的,而且我们的一些客户坚持“零警告政策”

我们只需要类获取
WebServiceTemplate
。我们以某种方式使用它:

response = getWebServiceTemplate().marshalSendAndReceive(
               uri, request, new SoapActionCallback(soapAction));
问题: 在Spring中是否有其他方法(实际上,我们使用Spring Boot)来实现相同的结果,而不需要额外的太多配置,也不需要警告


也许Spring还有另一个类,它具有为组合设计的相同功能?还是静态工厂方法?

如上所述,您可以安全地忽略警告。简单地切换到JDK动态代理可能会破坏您的应用程序(取决于您是否有所有类的接口以及您如何进行依赖项注入)。@M.Deinum忽略警告不是一件好事,人们很容易习惯它。我们的一些客户需要“零警告政策”!我想知道是否有一种“更合适”的方法来使用这个类。解决方案在警告中,但是当这样做时,您可能会(很可能)破坏应用程序的其他部分。Spring选择使用基于类的代理是有原因的。禁用时,
@Transactional
之类的东西可能会中断,因为它们可能位于没有接口的类上。此外,如果您有接口,但忽略它们并简单地注入完整类型(而不是对接口进行编程),则这些接口将中断。是的,你可以修复它,但它可能会破坏你的应用程序。@M.Deinum:我理解。也许还有另一个诀窍如何实现它?也许Spring还有另一个类,它具有为组合设计的相同功能?我不喜欢“为需要XY功能的应用程序类提供方便的超类”的想法,这个成语属于上个世纪:)超类所做的唯一事情就是提供一个预配置的
WebServiceTemplate
的实例。您只需配置
WebServiceTemplate
,而无需扩展超类并将模板注入类中。