RequestContextConfiguration.java
package uk.gov.dhsc.htbhf.requestcontext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
import uk.gov.dhsc.htbhf.requestcontext.aop.RequestContextAdvisor;
/**
* Configuration class to be used to setup the required beans to setup the request scoped
* request context and the filter to be used to add those values to the MDC for logging.
*/
@Configuration
public class RequestContextConfiguration {
@Bean
public MDCWrapper mdcWrapper() {
return new MDCWrapper();
}
@Bean
public RequestContextHolder requestContextHolder() {
return new RequestContextHolder();
}
@Bean
public RequestIdFilter requestIdFilter() {
return new RequestIdFilter(requestContextHolder(), mdcWrapper());
}
@Bean(name = "restTemplateWithIdHeaders")
public RestTemplate restTemplateWithIdHeaders() {
var restTemplate = new RestTemplate();
var interceptors = restTemplate.getInterceptors();
interceptors.add(headerInterceptor());
return restTemplate;
}
@Bean
public HeaderInterceptor headerInterceptor() {
return new HeaderInterceptor(requestContextHolder());
}
@Bean
public RequestContextAdvisor requestContextAdvisor() {
return new RequestContextAdvisor(requestContextHolder(), mdcWrapper());
}
}