我正在开发一个项目,目前我们正在从Spring升级到Spring Boot。我们有一个在Controller中自动装配的JAX-WS客户端bean,但现在它说它找不到那种类型的bean。下面你可以看到代码片段,我不得不编辑信息,所以如果一些命名链接被破坏,对不起。
我们在xml中有一个JAX-WS客户端配置描述为:
<jaxws:client id="applyClient"
serviceClass="JaxClass"
address="jaxAddress" >
<jaxws:outInterceptors>
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
<constructor-arg>
<map>
<entry key="action" value="Signature Timestamp"/>
<entry key="signatureKeyIdentifier" value="DirectReference"/>
<entry key="passwordType" value="PasswordText" />
<entry key="signaturePropFile" value="signature.properties"/>
<entry key="user" value="userVal" />
<entry key="passwordCallbackRef">
<ref bean="passwordCallback"/>
</entry>
</map>
</constructor-arg>
</bean>
${openComment} <bean class="org.apache.cxf.interceptor.LoggingOutInterceptor" /> ${closeComment}
</jaxws:outInterceptors>
<jaxws:inInterceptors>
${openComment}<bean class="org.apache.cxf.interceptor.LoggingInInterceptor" /> ${closeComment}
</jaxws:inInterceptors>
</jaxws:client>
此服务类如下:
@WebService(targetNamespace = "Folder", name = "TestName")
@XmlSeeAlso({Folder.ObjectFactory.class, otherFolder.ObjectFactory.class})
public interface JaxClass {
@WebResult(...)
@RequestWrapper(...)
@WebMethod
@ResponseWrapper(...)
public java.lang.String updateGBFoaInformation(
@WebParam(...)
Folder.FoaInformation foaInformation
) throws ExchangeRequestValidationException, ExchangeInternalErrorException;
@WebResult(...)
@RequestWrapper(...)
@WebMethod
@ResponseWrapper(...)
public method2 setGBUserSession(
@WebParam(...)
Folder.GBUserSessionRequest gbUserSessionRequest
) throws ExchangeRequestValidationException,
ExchangeInternalErrorException;
}
然后在Controller类中,我们将其自动装配:
@RestController
public class TestController{
@Autowired
JaxClass applyClient;
...
此设置一直有效,直到我们开始升级。现在我们得到错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
Field applyClient in TestController required a bean of type 'JaxClass' that could not be found.
Action:
Consider defining a bean of type 'JaxClass' in your configuration.
有点困惑,因为我在过去一周左右的时间里试图解决这个问题。任何帮助或建议表示赞赏。
答案 0 :(得分:0)
请确保在SpringBoot Application类上使用@ComponentScan注释扫描JaxClass的包。
@ComponentScan(&#34; com.xxx.yyy&#34)
答案 1 :(得分:0)
发现问题,虽然技术上xml文件在类路径中,是文件夹位置,但是应用程序不知道要包含它,所以添加了@ImportResource注释并修复了我的问题。