SpringBoot
【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】
SpringBoot 原理篇
文章目录
- SpringBoot
- SpringBoot 原理篇
- 2 自定义starter
- 2.6 拦截器开发
- 2.6.1 拦截器开发
- 2.6.2 小结
2 自定义starter
2.6 拦截器开发
2.6.1 拦截器开发
OK, 到咱们之前为止,基本上所有的功能都做完了,
剩下的问题就是,现在只能是调用了分页查询接口才计算访问次数,咱们也不能去源码中给所有的方法都加上这玩意儿【太low了】,所以拦截器来了
AOP思想,在所有方法运行前执行一下计算访问次数操作
但是现在是Web 工程,那就用拦截器实现
拦截器类
package com.dingjiaxiong.controller.interceptor;
import cn.dingjiaxiong.service.IpCountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* ClassName: IpCountInterceptor
* date: 2022/10/25 20:37
*
* @author DingJiaxiong
*/
public class IpCountInterceptor implements HandlerInterceptor {
@Autowired
private IpCountService ipCountService;
//运行拦截之前
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
ipCountService.count();
return true;
}
}
controller 里面就别加了
配置类
package com.dingjiaxiong.controller.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;
/**
* ClassName: SpringMVCConfig
* date: 2022/10/25 20:39
*
* @author DingJiaxiong
*/
@Configuration
public class SpringMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(ipCountInterceptor()).addPathPatterns("/**");
}
@Bean
public IpCountInterceptor ipCountInterceptor(){
return new IpCountInterceptor();
}
}
OK,直接运行
OK,现在只要发了请求,不管是什么,都会被计数了
【现在就完成了…吗?】
不,现在的问题是,一旦我把坐标注掉
再次运行
直接就红了
所以还是要修改一下
先恢复坐标【其实问题就是拦截器的位置不对】
直接复制粘贴
SSMP 中的拦截器就不要了
注意还要配置一下加载配置类
OK,再次安装运行
OK, 这样就可以了,现在把坐标注掉
也不影响工程运行
OK,回顾一下
- 自定义拦截器
- 设置核心配置类,加载拦截器
2.6.2 小结
- 拦截器开发