1、提供了SqlSession的替代品SqlSessionTemplate(相对sqlSession来说是线程安全的),里面有一个实现,实现了InvocationHandler的内部SqlSessioninterceptor,本质是对SqlSession的代理。
2、提供了获取SqlSessionTemplate的抽象类SqlSessionDaoSupport。
3、扫描Mapper接口,注册到容器中的是MapperFactoryBean,它继承了SqlSessionDaoSupport,可以获得SqlSessionTemplate。
4、把Mapper注入使用的时候,调用的是getObject()方法,它实际上是调用了SqlSessionTemplate的getMapper()方法,注入了一个JDK动态代理对象。
5、执行Mapper接口的任意方法,会走到触发管理类MapperProxy,进入SQL处理流程
Spring是怎么把MyBatis继承进去的?
于 2023-04-30 19:23:36 首次发布