程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Spring Interceptor在Spring Data REST URL中不起作用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Spring Interceptor在Spring Data REST URL中不起作用?

开发过程中遇到Spring Interceptor在Spring Data REST URL中不起作用的问题如何解决?下面主要结合日常开发的经验,给出你关于Spring Interceptor在Spring Data REST URL中不起作用的解决方法建议,希望对你解决Spring Interceptor在Spring Data REST URL中不起作用有所启发或帮助;

通过声明类型为MappedInterceptor的bean并将其注入我的拦截器(扩展了handlerinterceptorAdapter),Spring Data Rest拾取了我的拦截器,并且现在可以在应用程序上的任何URL上使用。

这转化为以下实现(替换了我原来的问题):

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @autowired
    DbeditorTenanTinterceptor dbeditorTenanTinterceptor;

    @Bean
    public MappedInterceptor dbeditorTenanTinterceptor() {
        return new MappedInterceptor(new String[]{"/**"}, dbeditorTenanTinterceptor);
    }

}

不幸的是,我在Spring文档中找不到对此的任何引用。

解决方法

我正在使用Spring Data Rest和JPA进行项目,并且正在尝试配置http拦截器。根据Spring Web MVC Docs-Handler
Mapping Interceptor中提供的参文档,我创建了一个扩展HandlerInterceptorAdapter的组件,如下所示:

@Component
public class DBEditorTenanTinterceptor extends HandlerInterceptorAdapter {

    Logger logger = LoggerFactory.getLogger(DBEditorTenanTinterceptor.class);

    @Override
    public Boolean preHandle(httpServletrequest request,httpServletResponse response,Object handler)
        throws Exception {
         logger.debug("********** INTERCEPTION succesSFUL **********");
         return true;
    }
}

然后,通过扩展WebMvcConfig来注册拦截器(如Spring Web MVC Docs-Config
Interceptors中所述)

@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Autowired
    DBEditorTenanTinterceptor dbEditorTenanTinterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
         registry.addInterceptor(dbEditorTenanTinterceptor)
         .addPathPatterns("/**");
    }

}

当我向Spring Data REST未使用的任何URL(例如/ Helloworld)发出http请求时,拦截器按预期工作,如我所见,记录器输出

017-10-26 13:16:24.689 DEBUG 17012 --- [p-nio-80-exec-4] c.c.v.d.DBEditorTenanTinterceptor        : ********** INTERCEPTION succesSFUL **********

但是,当spring数据库使用URL时,不会调用我的拦截器。这适用于所有网址,例如/ api / {模型中的现有实体}

为什么没有为Spring Data Rest URL调用我的拦截器?如何使拦截器对所有请求起作用?

非常感谢。

大佬总结

以上是大佬教程为你收集整理的Spring Interceptor在Spring Data REST URL中不起作用全部内容,希望文章能够帮你解决Spring Interceptor在Spring Data REST URL中不起作用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。