Spring 全局客户端拦截器
Spring Global ClientInterceptor
我有一个使用大量客户服务的遗留应用程序。最近,需要为每个请求添加自定义 http 安全性 header。一种方法是为每个 WebServiceTemplate 添加一个 ClientInterceptor,但我觉得它有点重复代码。有没有办法应用全局 ClientInterceptor ?
正如我所说,这是一个仍然建立在 Spring Fw 3.2.2.RELEASE 和 spring-ws 2.0.6-RELEASE
之上的遗留系统
你可以实现一个通用的 ClientInterceptor
,像这样:
public class AddCustomSecurityHeader implements ClientInterceptor {
@Override
public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException {
TransportContext context = TransportContextHolder.getTransportContext();
HttpComponentsConnection connection =(HttpComponentsConnection) context.getConnection();
connection.addRequestHeader("custom-security-header", "lorem ipsum");
return true;
}
}
然后你声明一个 @Bean
类型 WebServiceTemplate
:
@Bean
public WebServiceTemplate webServiceTemplate() {
WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
// add your current configuration here
ClientInterceptor[] interceptors = {new AddCustomSecurityHeader()};
webServiceTemplate.setInterceptors(interceptors);
return webServiceTemplate;
}
希望对您有所帮助!
我有一个使用大量客户服务的遗留应用程序。最近,需要为每个请求添加自定义 http 安全性 header。一种方法是为每个 WebServiceTemplate 添加一个 ClientInterceptor,但我觉得它有点重复代码。有没有办法应用全局 ClientInterceptor ?
正如我所说,这是一个仍然建立在 Spring Fw 3.2.2.RELEASE 和 spring-ws 2.0.6-RELEASE
之上的遗留系统你可以实现一个通用的 ClientInterceptor
,像这样:
public class AddCustomSecurityHeader implements ClientInterceptor {
@Override
public boolean handleRequest(MessageContext messageContext) throws WebServiceClientException {
TransportContext context = TransportContextHolder.getTransportContext();
HttpComponentsConnection connection =(HttpComponentsConnection) context.getConnection();
connection.addRequestHeader("custom-security-header", "lorem ipsum");
return true;
}
}
然后你声明一个 @Bean
类型 WebServiceTemplate
:
@Bean
public WebServiceTemplate webServiceTemplate() {
WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
// add your current configuration here
ClientInterceptor[] interceptors = {new AddCustomSecurityHeader()};
webServiceTemplate.setInterceptors(interceptors);
return webServiceTemplate;
}
希望对您有所帮助!