开发者学堂课程【SpringBoot 实战教程: 自定义拦截器】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/651/detail/10791
自定义拦截器
内容介绍:
一、定义
二、案例
一、定义
有些时候需要自己配置 SpringMVC 而不是采用默认,springboot 都做了自动配置,但是有些配置还是需要自己实现,比如项目中常用的拦截器,就应该根据自己的功能需要进行定义,增加一个拦截器,这个时候就得通过继承 WebMvcConfigurerAdapter 然后重写父类中的方法进行扩展。
二、 案例
1、首先创建一个放拦截器的包,命名为 com.qianfeng.interceptor。
2、在这个下面创建一个拦截器,命名为 myinterceptor,注意它要继承 WebMvcConfigurerAdapter。
3、在父类中有个方法重写即可,方法叫 addInterceptors
(InterceptorRegistry)。写一个简单的输出功能,返回 ture。
@Configuration
public class MyInterceptor extends WebMvcConfigure rAdapter {
@override
public void addInterceptors (InterceptorRegistry registry) {
HandlerInterceptor handler Interceptor=new HandlerInterceptor () {
@Override
public boolean preHandle (HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2) throws Excepfion {
System. out. println("自定义拦截器.....");
Return true;
}
@Override
public void postHandle (HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
Throws Exception {
4、拦截器写好后需要注册,在 springmac 中是在 xml 文件中进行注册即可,并且指明拦截器所拦截的资源。有一个参数叫 InterceptorRegistry 拦截器注册,通过它进行注册,把定义的拦截器添加进来,注册进去后,还需要指明拦截器所拦截资源的路径,用/**指拦截所有,这个是在 springboot 中定义拦截器的方式,继承 WebMvcConfigure rAdapter ,重写 addInterceptors,最后用这种方式进行拦截器的注册。
5、用 @Configuration 声明这是一个配置。MyInterceptor 可以被拦截器扫描到,看一下启动程序,SpringBootApplication 注解有一个扫描的功能,所以要让 springboot 扫描到这个拦截器,应该指明它所在的包,包名加进来,这样可以扫描到拦截器。
@SpringBootApplication (scanBasePackages=
{
"com. qianfeng. controller", "com.qianfeng. interceptor"
}
6、访问 controller,应该先走拦截器,拦截器里面输出一句话,再 controller,显示 hello,你好。
@RequestMapping("/tt")
@ResponseBody
Public
String tests ( )
{
Return
"hello,
你好
";
}
7、启动,controller 访问路径是 tt。控制台里面打印了这个拦截器,证明拦截器起作用了。