spring与mybatis是日常开发工作中两个很流行的框架,这里简单记录一下这两个框架的整合原理。
首先明确一点,spring框架扫描的对象是类,在项目启动的时候,spring会根据配置文件扫描项目中的目标类并将其解析为一个一个的BeanDefinition记录下来,然后再通过BeanDefinition反射构建出真正的对象进行自动装配。
而mybatis框架扫描的对象的接口,先将dao的接口注册到MapperRegister中,将mapper.xml的信息解析成一个一个的MapperStatemnet并记录下来,后续通过获取到Mapper代理对象,执行方法时通过接口类+方法名获取到对应的mapperStatement,最终就可以执行目标的sql并返回结果。
整合的思想就是将mybatis已经处理好的mapper对象注册到spring中,使其也成为一个正常的beanDefinition,这样当spring需要装配Mapper对象的时候就能装配进正确的对象了。
@MapperScan
mybatis在mybatis-spring包里提供了@MapperScan注解,该注解上又有了一个**@Import({MapperScannerRegistrar.class})** 标识,核心就在MapperScannerRegistrar这个类中,下面我们也会重点看它。
MapperScannerRegistrar
自此,spring就成功的将mybatis整合好了。