当前位置: 代码网 > it编程>编程语言>Java > SpringBoot拦截器怎么配置?手把手教你实现自定义拦截器

SpringBoot拦截器怎么配置?手把手教你实现自定义拦截器

2026年07月29日 Java 我要评论
springboot添加拦截器拦截器也是我们经常需要使用的,在springboot中该如何配置呢?拦截器不是一个普通属性,而是一个类,所以就要用到java配置方式了。在springboot官方文档中有

springboot添加拦截器

拦截器也是我们经常需要使用的,在springboot中该如何配置呢?

拦截器不是一个普通属性,而是一个类,所以就要用到java配置方式了。

在springboot官方文档中有这么一段说明:

if you want to keep spring boot mvc features and you want to add additional mvc configuration (interceptors, formatters, view controllers, and other features), you can add your own @configuration class of type webmvcconfigurer but without @enablewebmvc. if you wish to provide custom instances of requestmappinghandlermapping, requestmappinghandleradapter, or exceptionhandlerexceptionresolver, you can declare a webmvcregistrationsadapter instance to provide such components.

if you want to take complete control of spring mvc, you can add your own @configuration annotated with @enablewebmvc.

翻译:

如果你想要保持spring boot 的一些默认mvc特征,同时又想自定义一些mvc配置(包括:拦截器,格式化器, 视图控制器、消息转换器 等等),你应该让一个类实现webmvcconfigurer,并且添加@configuration注解,但是千万不要@enablewebmvc注解。

如果你想要自定义handlermappinghandleradapterexceptionresolver等组件,你可以创建一个webmvcregistrationsadapter实例 来提供以上组件。

如果你想要完全自定义springmvc,不保留springboot提供的一切特征,你可以自己定义类并且添加@configuration注解和@enablewebmvc注解

首先我们定义一个拦截器

@component
//继承handlerinterceptor
public class myinterceptor implements handlerinterceptor {
    @override
    public boolean prehandle(httpservletrequest request, httpservletresponse response, object handler) throws exception {
        system.out.println("prehandle method is running!");
        return true;
    }

    @override
    public void posthandle(httpservletrequest request, httpservletresponse response, object handler, modelandview modelandview) throws exception {
        system.out.println("posthandle method is running!");
    }

    @override
    public void aftercompletion(httpservletrequest request, httpservletresponse response, object handler, exception ex) throws exception {
        system.out.println("aftercompletion method is running!");
    }
}

定义配置类,注册拦截器

@configuration
//实现`webmvcconfigurer`,并且添加`@configuration`注解
public class mvcconfiguration implements webmvcconfigurer {

    //注入定义的拦截器
    @autowired
    private handlerinterceptor myinterceptor;

    /**
     * 重写接口中的addinterceptors方法,添加自定义拦截器
     * @param registry
     */
    @override
    public void addinterceptors(interceptorregistry registry) {
/*拦截路径*/        registry.addinterceptor(myinterceptor).addpathpatterns("/**");
    }
}

接下来运行并查看日志

prehandle method is running!
posthandle method is running!
aftercompletion method is running!

你会发现日志中只有这些打印信息,springmvc的日志信息都没有,因为springmvc记录的log级别是debug,springboot默认是显示info以上,我们需要进行配置。

springboot通过logging.level.*=debug来配置日志级别,*填写包名

# 设置org.springframework包的日志级别为debug
logging.level.org.springframework=debug

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com