mybatis-Spring ClassPathMapperScanner源码分析(自定义注解加载Bean)

本文深入探讨了mybatis-Spring中ClassPathMapperScanner的源码,回顾了MapperFactoryBean和MapperCannerConfigurer的配置。文章通过实例详细分析了如何自定义bean注解的扫描过程,包括定义自定义注解、注解应用到类上、创建BeanScannerConfigurer、实现ClassPathBeanDefinitionScanner以及如何获取和使用扫描到的Bean。
摘要由CSDN通过智能技术生成

摘要:

在使用mybatis时,可以通过mybatis-spring的MapperFactoryBean来配置一系列的DAO接口,MapperFactoryBean的getObject方法能返回DAO接口对应的动态代理类,实际是通过DefaultSqlSession以动态代理的方式生成DAO接口的实现类。而当DAO类很多时,可以通过mybatis-spring的MapperCannerConfigurer类配置要描述的包,来实现生成MapperFactoryBean对象,减少配置。

一、MapperFactoryBean 与MapperCannerConfigurer 配置回顾

MapperFactoryBean 配置要使用的DAO
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
  <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />  
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />  
</bean>  
通过上面的配置在 Service层中就可以直接注入 userMapper这个DAO, MapperFactoryBean内部会调用DefaultSqlSession以动态代理的方式生成DAO接口的实现类。

MapperCannerConfigurer配置多个要使用的DAO
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  <property name="basePackage" value="org.mybatis.spring.sample.mapper" />  
  <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>  

通过上面的配置在包org.mybaits.spring.sample.mapper中下面对应的DAO接口,便能生成对应的MapperFactoryBean对象,然后被Service层调用。因为在 DefaultSqlSession
内部是以动态代理的方式生成DAO接口对应的实现类,这里DAO要声明为接口。
MapperCannerConfigurer是通过实现BeanDefinitionRegistryPostProcessor接口,完成对BeanDefinitionRegistry自定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值