微人事第四天:在springboot中注册拦截器

之前使用xml的方式来配置拦截器,现在使用配置类的方式来注册拦截器。
1.首先定义拦截器

package org.javaboy.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//定义拦截器
public class MyInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletio");
    }
}

拦截器中定义的三个方法分别是拦截前,拦截时,拦截后。现在分别在这三个方法中打印语句以便于观察拦截器是否生效。

2.定义好拦截器之后现在来配置拦截器

package org.javaboy.interceptor;

import org.springframework.context.annotation.Bean;
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 WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //这里拦截所有的路径
        registry.addInterceptor(myInterceptor()).addPathPatterns("/**");
    }

    //拿到拦截器的bean
    @Bean
    public MyInterceptor myInterceptor() {
        return new MyInterceptor();
    }
}

配置的时候先要在类前加上注解@Configuration,代表这是一个配置类。然后通过@Bean将定义好的拦截器取到。最后通过addInterceptors方法添加拦截路径,registry.addInterceptor(myInterceptor())后有许多方法:比如添加拦截路径,配置优先级等等…这里/**是将所有路径都拦截。

4.定义controller进行测试拦截器是否生效

package org.javaboy.interceptor;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "hello";
    }
}

控制台打印的结果:
在这里插入图片描述
拦截器注册生效了。

发布了287 篇原创文章 · 获赞 24 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41998938/article/details/104018492
今日推荐