WebConfiguration.java
package com.project.auth.config.web;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;
import java.time.Clock;
@Configuration
@EnableConfigurationProperties(AccessLogProperties.class)
public class WebConfiguration {
@Bean
public FilterRegistrationBean<TraceIdFilter> traceIdFilter() {
FilterRegistrationBean<TraceIdFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new TraceIdFilter());
registration.addUrlPatterns("/*");
registration.setOrder(Ordered.HIGHEST_PRECEDENCE);
return registration;
}
@Bean
public FilterRegistrationBean<RequestAccessLogFilter> requestAccessLogFilter(
AccessLogProperties accessLogProperties
) {
FilterRegistrationBean<RequestAccessLogFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new RequestAccessLogFilter(accessLogProperties));
registration.addUrlPatterns("/*");
registration.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
return registration;
}
@Bean
public RequestBoundApiResultFactory apiResultFactory(Clock systemClock) {
return new RequestBoundApiResultFactory(systemClock);
}
}