这可以通过实现 ServletContextInitializer 来实现。请参阅下面的示例代码。
@Configuration
public class WebConfigurer implements ServletContextInitializer {
@Value("${jwt.secret}")
private String jwtSecret;
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
EnumSet<DispatcherType> disps = EnumSet.of(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.ASYNC);
initFilter(servletContext, disps);
}
private void initFilter(ServletContext servletContext,
EnumSet<DispatcherType> disps) {
FilterRegistration.Dynamic myFilter =
servletContext.addFilter("myFilter",
new MyFilterClass(jwtSecret));
// You can pass null as first parameter to below API calls
myFilter.addMappingForUrlPatterns(disps, true, "/content/*");
myFilter.addMappingForUrlPatterns(disps, true, "/app/*");
myFilter.setAsyncSupported(true);
}
}
编辑/更新:
我想还有另一种方法可以使用Java Config添加过滤器
您可以使用 FilterRegistrationBean 来注册筛选器。在这里,您可以使用setOrder方法设置订单。但是认为它会创建与过滤器一样多的ServletContextInitializer,因为FilterRegistrationBean是ServletContextInitializer See