[英]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.