mybatics mapper的注入过程 在使用mybatics时,通过MapperScan注解 import registrar MapperScannerRegistrar 在MapperScannerRegistrar中会对 ClassPathMapperScanner进行初始化,如setMapperFactoryBean,setSqlSessionTemplateBeanName,setSqlSessionFactoryBeanName等;然后调用ClassPathMapperScanner.doScan方法 在doScan方法中会扫描所有的Mapper,并通过MapperFactoryBean生成对应的代理类,然后将该类注册到spring bean factory中,在初始化BeanDefinition时,会通过RuntimeBeanReference添加需要的属性,如sqlSessionTemplate,sqlSessionFactory等,而sqlSessionTemplate,sqlSessionFactory是在MybatisAutoConfiguration中注入到BeanFactory中的。 MapperFactoryBean继承了SqlSessionDaoSupport,在spring 创建MapperFactoryBean会通过sqlSessionTemplate或sqlSessionFactory生成sqlSession 在执行某个mapper时,执行的是动态代理类,代理类为MapperProxy,该类的getObject()方法通过sqlSession.