1、 定义拦截器接口
- type()方法: 返回拦截器类型 pre,route,post,error
- order()方法:返回拦截器执行顺序
- run() 方法: 执行相关的业务逻辑
2、定义上下文传输对象
使用map存储并且要保证线程安全,使用 ConcurrentHashMap+ThreadLocal实现
3、配置类和执行器类
配置类主要是 springboot的 stater 指定的类,用来注入bean
执行器类 主要运行 拦截器
- 拦截器的初始化 在bean初始化的时候完成拦截器初始化 实现spring InitializingBean接口 实现里面的 afterPropertiesSet方法 获取容器中所有实现了 拦截器接口的 bean 将这些bean根据type分类 放入全局变量中 并调用 order方法 进行排序
- 定义run方法,run方法中需要传入 request,response对象,每次调用run方法都要获取上下文传输对象 并设置 request,response,提供给filter中使用
代码具体实现 都放在 gitee了
https://gitee.com/wang_1009654487/my-runner