> 文章列表 > spring加载mybatis过程

spring加载mybatis过程

spring加载mybatis过程

两个主要的配置类:

SqlSessionFactoryBean: Spring就是利用它来创建Mybatis的SqlSessionFactory。

MapperScannerConfigurer:Spring就是用它来扫描我们的mapper接口,并注册到IOC容器中。

接下来分析:

Spring是如何帮助我们自动创建SqlSessionFactory的?

SqlSessionFactoryBean实现了三个接口,一个是InitialzingBean,另一个是FactoryBean,还有就是ApplicationListener接口。

InitialzingBean接口:实现了该接口,当bean初始化时,spring就会调用该接口的         afterPropertiesSet方法,去实现当spring初始化该bean时所需要的逻辑。

FactoryBean接口:实现该接口,在调用getBean时候会返回该工厂返回的实例对象,也就是再调一次getObject方法返回工厂的实例。

ApplicationListener接口:实现了该接口,如果注册了该监听的话,就可以监听到Spring的一些事件,然后做相应的处理。

看一下:SqlSessionFactoryBean类的afterPropertiesSet()做了什么事情?

答:通过buildSqlSessionFactory()方法创建了一个SqlSessionFactory。接下来就是Myabtis的哪些build()方法的逻辑。

接下来看一下:如何获取SqlSessionFactoryBean实例?

前面说了实现了FactoryBean接口,所以通过getBean获取它的实例的时候就是调用getObject()方法,获取到的是sqlSessionFactory。

三.Mapper接口的获取

也就是看Spring是如何加载我们的Mapper接口的。Spring里面主要通过MapperScannerConfigcrer类来扫描我们的mapper接口,并将他们注册到IOC容器中。

那么我们是如何从Spring容器中获取mapper接口的?

主要是这个类MapperFactoryBean类,因为实现了FactoryBean接口,那么在调用getBean方法获取MapperFactpry实例的时候,实际上调用的就是getObject方法。getObject方法调用了getMapper,所以我们不需要手动去管理SqlSession,是spring帮我们自动管理并获取mapper接口的。