Ниже приведен код, адаптированный из приложения Spring Webflux:
import org.springframework.web.server.ServerWebExchange;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.WebFilterChain;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc
@Slf4j
@ComponentScan(basePackages = "mypackage")
public class WebConfig implements WebMvcConfigurer {
@Autowired
@Lazy
private UserRepository userRepository;
@Autowired
@Lazy
private UserService userService;
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/");
}
@Bean
public WebFilter filter() {
return (exchange, chain) -> {
ServerHttpRequest req = exchange.getRequest();
String uri = req.getURI().toString();
// detect cookie, if no cookie create new one, add pageview to user, save user
// code removed
return chain.filter(exchange);
};
}
Но он не компилируется, поскольку метод фильтра интерфейса Webfilter возвращает Mono.
Как перехватить все запросы (сквозная задача) в приложении Spring Boot 2.0 Spring Web MVC (не webflux)?