我有多个ClientHttpRequestInterceptor设置为我的RestTemplate(CommonRestTemplateBuilder)的公共配置,其中一个是LogRequestInterceptor。
问题是,当我在一个新的@配置中添加一个新的ClientHttpRequestInterceptor时,我使用commonRestTemplateBuilder作为基础创建了另一个RestTemplate,用于日志记录的拦截器在新拦截器之前执行。
这里的问题是新的拦截器添加了未反映在日志中的标头。
有可能给拦截器下命令吗?
代码如下:
/**
* Configures the common rest template builder for building {@link RestTemplate}
*/
@Bean
public RestTemplateBuilder commonRestTemplateBuilder(HttpClient httpClient) {
return new RestTemplateBuilder()
.requestFactory(() -> {
//Use Apache Http Client request factory
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
//Use the apache caching http client
requestFactory.setHttpClient(httpClient);
//Use buffering client for debugging (get the body of the request)
return new BufferingClientHttpRequestFactory(requestFactory);
})
.customizers()
.interceptors(
//For adding common headers
new AddCommonsHeadersRequestInterceptor(),
//For logging the requests
new LogRequestInterceptor());
}
然后在另一个班级:
/**
* Configures the {@link RestTemplate} for {@link CompanyAClient}
* using as a base the {@link CommonRestTemplateConfiguration}.
*/
@Bean
public RestTemplate companyARestTemplate() {
return commonRestTemplateBuilder
.rootUri("http://companyA.com/api")
.additionalInterceptors(new AddCompanyAHeadersRequestInterceptor())
.build();
}
非常感谢你。
当然,这是可能的。从Spring 5开始,使用AnnotationAwareOrderComparator对拦截器进行排序。您只需在拦截器上添加注释@顺序或@优先级:
@Order(1)
public class FirstInterceptor implements ClientHttpRequestInterceptor {
...
}
@Order(2)
public class SecondInterceptor implements ClientHttpRequestInterceptor {
...
}
问题内容: 我正在使用RestTemplate来调用Web服务。 如果此操作无法返回用户ID,我只会返回null,但不知道为什么。如何将实际的XML响应输出到日志? 问题答案: 根据所使用的建立HTTP连接的方法,您可以查看在实际HTTP连接类中打开日志记录。 例如,如果您使用Commons HttpClient,则可以设置 commons- httpclient项目在其日志记录做法的文档中有一整
我试图使用下面的代码模拟方法,但我得到了异常,而且我是单元测试的新手
问题内容: 伙计们,我想在mysql中使用解析函数滞后。在Oracle中受支持,但在Mysql中无法做到。那么有人可以帮助我如何在Mysql中执行滞后运算吗?例如 我想使用滞后函数,以便我的输出如下 Mysql支持滞后功能吗??? 问题答案: 您可以使用用户变量来模拟它: 看到它在工作sqlfiddle直播 在这里,您可以初始化变量。这与在编写查询之前编写内容相同。 那么这些语句在select子句
问题内容: 我想做的是 找出重定向之后的最后一个/最终URL是什么 。 我不希望使用cURL。 我想坚持使用纯PHP(流包装器)。 现在,我有一个URL(比如说http://domain.test),并且我使用get_headers()从该页面获取特定的标题。get_headers也将返回多个标题(请参见下面的 Edit )。有没有办法使用这些标头来构建最终URL?还是有一个PHP函数可以自动执行
我使用的是1.3.3.Spring Boot的发行版。