- 博客(5)
- 收藏
- 关注
原创 springboot mybatis加载过程
@MapperScan注解使用了@Import(MapperScannerRegistrar.class)修饰,会将MapperScannerConfigurer加入spring,MapperScannerConfigurer扫描接口并将beanClass设置为MapperFactoryBean.class,MapperFactoryBean为接口创建对应的MapperProxyFactory并扫描xml,最终返回MapperProxy实例,执行mapper方法会进入MapperProxy的invoke方法
2025-01-17 09:30:21
414
原创 分页插件原理(PageHelper)
PageHelper.startPage(current, size);方法主要做了两件事:拼装并初始化com.github.pagehelper.Page类将拼装好的Page类存入ThreadLocalpagehelper有一个拦截器PageInterceptor,使用了@Intercepts注解修饰,会对mybatis中的查询接口做拦截增强,拦截器中使用了上面提到的ThreadLocal取出Page类做判断,当Page类不为null,才会进入分页操作。
2025-01-16 17:08:16
542
原创 @Intercepts注解原理(mybatis拦截器)
MybatisAutoConfiguration初始化的时候,会在构造函数收集所有实现Interceptor接口的bean,在初始化SqlSessionFactory时,将Interceptor实例数组传入SqlSessionFactoryBean,再存入SqlSessionFactory的Configuration.interceptorChain,当执行mapper接口方法时,会走到InterceptorChain.pluginAll方法,形成类似责任链模式的数据结构,执行的时候按照责任链顺序执行
2025-01-16 16:24:05
265
原创 springboot项目maven打包插件原理
使用java -jar命令运行一个jar文件时,jvm会读取jar文件中的MANIFEST.MF文件,其中的Main-Class属性用来确定应用程序的入口类。maven打包插件的主要作用就是将Main-Class属性写入MANIFEST.MF文件(以及Start-Class属性),并将程序的所有依赖库都一块放到BOOT-INF/lib/目录下,默认JarLauncher为主类,启动时JarLauncher使用反射调用实际的启动类
2024-11-11 11:26:07
1071
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人