欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

1-4. SpringBoot配置自定义拦截器,实现日志管理

程序员文章站 2023-11-08 08:21:34
最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持。自定义一个类实现HandlerInterceptorpackage cn.sysu.ming.interceptor;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.H...

最近突发奇想,整合一下以前一些学习笔记,分享自己这几年爬过的坑,逐步更新文章,谢谢大家的关注和支持。
自定义一个类实现HandlerInterceptor

package cn.sysu.ming.interceptor;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyInterceptor implements HandlerInterceptor {

    private static final Logger log = LoggerFactory.getLogger(MyInterceptor.class);

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info("preHandle 方法执行了");
        return true;
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        log.info("afterCompletion 方法执行了");
    }
}

当配置完拦截器后,还得告诉SpringBoot,因为拦截器不是一个普通属性,而是一个类,所以用到了java配置。不懂java配置的可以参考一下我前面发过的1-3. SpringBoot基础,Java配置(全注解配置)取代xml配置

如果想保持SpringBoot一些默认MVC特征,同时又想自定义一些MVC配置(包括:拦截器,格式化器,视图控制器,消息转换器等),让一个类实现WebMvcConfigurer,并且添加@Configuration注解,但千万别加@EnableWebMvc注解。

package cn.sysu.ming.config;

import cn.sysu.ming.interceptor.MyInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MyMvcConfig implements WebMvcConfigurer {

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

注意,如果配置了debug的化,要在application.properties或者application.yml中修改日志控制级别,logging.level,值为Map结构,key为包,value为级别(info、debug,error等等),这边使用application.yml举个例子

server:
  port: 80
logging:
  level:
    cn.sysu.ming:
      info

启动项目,游览器输入url来访问controller方法
1-4. SpringBoot配置自定义拦截器,实现日志管理

博主的坚持 离不开大家关注、评论和点赞,感谢大家支持。护发路上互相扶持!!!

本文地址:https://blog.csdn.net/dogHuaMing/article/details/112093217