MyBatis与Spring集成,将由Spring管理Mapper接口,而且由Spring维护线程安全的SqlSession,自动管理SqlSession,包括事务提交、回滚、SqlSession关闭等机制。安全
MyBatis与Spring集成,只须要定义两个必要的bean就完事了。app
PS:不管是@MapperScan注解仍是定义MapperScannerConfigurer的bean,内部都使用ClassPathMapperScanner来扫描指定的包路径,为每个Mapper接口都建立一个MapperFactoryBean。spa
SqlSessionFactoryBean实现Spring的FactoryBean,用于建立SqlSessionFactory对象,是须要定义一个。线程
MapperFactoryBean实现Spring的FactoryBean,用于建立某个Mapper接口的代理实现。一个MapperFactoryBean负责建立一个Mapper接口的实现,同时内部建立一个SqlSessionTemplate类型的SqlSession(线程安全),所以咱们须要定义多个。代理
为了简化咱们的工做,提供了两中扫描机制:对象
Spring的JavaConfig方式的扫描,接口