[英]How to let Interceptor work in springboot
我将代码迁移到 springboot,我们的 API 运行良好。 只有拦截器不能被触发。 我搜索了相关的解决方案并将代码修改为正确的格式,但仍然无法触发拦截器。
在我们的项目中,我们还有一个扩展了 OncePerRequestFilter 并且可以工作的过滤器。 这让我很困惑。 他们应该没有太大区别。
顺便说一句,项目中使用了AOP。 这是我的代码。
JerseyConfig.class
@Configuration
public class JerseyConfig extends ResourceConfig {
public JerseyConfig(){
packages("com.xxx");
}
}
VaultAuthorizationInterceptor.class
@Component
public class VaultAuthorizationInterceptor implements HandlerInterceptor {
private static final Logger logger = LoggerFactory.getLogger(VaultAuthorizationInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.info("test");
return true;
}
}
VaultAuthConfig.class
@Configuration
public class VaultAuthConfig implements WebMvcConfigurer {
@Bean
public VaultAuthorizationInterceptor getVaultInterceptor() {
return new VaultAuthorizationInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getVaultInterceptor()).addPathPatterns("/**");
}
}
当您使用 spring-boot-starter-jersey 时,您使用 jersey 作为您的 web 堆栈。 这意味着任何请求都将由 jersey 处理。 所以你必须注册一个 jersey 过滤器或拦截器。 看看jersey 文档。 描述了如何使用过滤器和拦截器。 我认为您想使用过滤器,因为 jersey 堆栈中的拦截器用于操纵输入或 output stream。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.