mapperscannerconfigurer是怎么注入sqlsessionfactory的
时间: 2023-05-03 10:06:30 浏览: 72
在Mybatis框架中,MapperScannerConfigurer是一个通过扫描指定包路径来自动注册Mybatis Mapper接口的类。MapperScannerConfigurer自动注入了SqlSessionFactory,它是一个工厂类,用于创建SqlSession对象的实例。MapperScannerConfigurer通过调用setSqlSessionFactory()方法来设置SqlSessionFactory属性,具体实现代码如下:
public class MapperScannerConfigurer implements BeanDefinitionRegistrar, ResourceLoaderAware, EnvironmentAware, BeanNameAware, InitializingBean, SmartInitializingSingleton {
...
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
...
@Override
public void afterSingletonsInstantiated() {
//调用扫描包路径的方法,将Mapper接口注册到Mybatis中
this.processMapperDefinitions();
}
}
从上述代码可以看出,在Mybatis框架中,MapperScannerConfigurer可以直接访问并设置SqlSessionFactory属性。在执行afterSingletonsInstantiated()方法时,MapperScannerConfigurer会扫描指定包路径下的Mapper接口,然后将这些Mapper接口注册到Mybatis中,从而实现对SqlSessionFactory的注入。此外,如果SqlSessionFactory的实例化在MapperScannerConfigurer之前完成,MapperScannerConfigurer也可以通过Spring的自动注入机制获得SqlSessionFactory的实例,从而完成对其注入的操作。