散装知识点
OncePerRequestFilter(过滤器Filter)
Spring针对Servlet原生过滤器Filter的进一步封装。通过继承OncePerRequestFilter,可以自定义一个过滤器,且每个请求都会执行一次。关于重写方法,init
、doFilter
作为默认实现,有final修饰,我们想进行扩展,需要重写initFilterBean
、doFilterInternal
1 | // 重写doFilterInternal进行业务扩展,别忘了最后进行过滤链调用 |
HandlerInterceptorAdapter(拦截器Interceptor)
HandlerInterceptorAdapter是Spring提供的一种拦截器适配器,通过继承该抽象类自定义拦截器。
主要实现三个接口:preHandle
、postHandle
、afterCompletion
1 | preHandle:前置处理,Controller执行前 |
自定义配置类,将拦截器加入调用链路,实现WebMvcConfigurer或WebMvcConfigurationSupport进行实现
WebMvcConfigurer可以进行多实现,WebMvcConfigurationSupport多实现会产生冲突
自定义SpringBoot默认MVC配置?好几个坑,避一避 - 知乎 (zhihu.com)
1 | WebMvcAutoConfiguration WebMvcConfigurationSupport默认实现DelegatingWebMvcConfiguration,Delegating会把所有WebMvcConfigurer的实现进行遍历,然后加入配置。 |
RequestContextHolders
可随时获取请求与响应,不用controller层往下传。
可自行封装http工具类,eg:https://www.jianshu.com/p/83a872d8db92
MDC
分布式日志?
TransmittableThreadLocal(解决异步上下文传递问题)
AOP动态代理,this引用不代理则失效
SmartInitializingSingleton (后置处理解决循环依赖)
HandlerMethodArgumentResolver (自定义接收前端传参实现)
https://blog.csdn.net/dear_little_bear/article/details/104565425
WebDataBinder 参数转换
WebMvcConfigurer
@AliasFor(别名,封装注解)
@EventListener spring事件监听机制
@Import 实现配置链式加载
配置链式加载,多个配置类链式引用,第一个被注入后,后面配置进行链式加载
Controller层接口定义为什么必须是public
接口调用servlet初始化是代理对象,public在后续调用链上会走aop代理增强,注入容器管理的类,private方法则不会。所以private方法被调用时用的是代理对象,代理对象是中自动注入的属性都是null,引发空指针。
Querydsl for JPA
http://querydsl.com/static/querydsl/latest/reference/html/ch02.html
1 | @LastModifiedBy |
自定义starter,如何自动装配
SpringBoot自定义日志Starter,可动态拔插配置 - 掘金 (juejin.cn)
1 | starter中配置统一用一个配置类集中注入 |
UriComponentsBuilder
https://www.baeldung.com/spring-uricomponentsbuilder
位图BitMap
二进制位代表多种类型组合,存储int型即可
例如业务产品涉及类型A B C D E。10101,00011,01010 则对应ACE、DE、BD这三种组合。存储值对应21、3、10
基础适用场景,多组合优惠卷、多固定标签、签到。