@MapperScan注解的原理

本文探讨了Spring中@MapperScan注解的工作原理,它通过@Import导入MapperScanRegistrar,实现了ImportBeanDefinitionRegistrar接口来注册bean。注解主要用于扫描接口,并将其转换为factoryBean放入容器,确保可以从容器中获取并调用方法。
摘要由CSDN通过智能技术生成

spring源码看多了,就发现很多开关型的注解,以@EnableXXX开头的这些注解,大体上实现原理差不多。@MapperScan也不能免俗,没办法,谁让spring允许插手bean实例化过程的方式只那么几种呢!

同样的通过@Import实现开关效应,MapperScanRegistrar实现ImportBeanDefinitionRegistrar接口,传一个registry给你,至于你想怎么注册就自己去注册。

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(MapperScannerRegistrar.class)
@Repeatable(MapperScans.class)
public @interface MapperScan {


  String[] value() default {};

  
  String[] basePackages() default {};

  Class<?>[] basePackageClasses() default {};
}
public class MapperScannerRegistrar implements ImportBeanDefinitionRegistrar, ResourceLoaderAware {

  private ResourceLoader resourceLoader;

   setResourceLoader(ResourceLoader resourceLoader) {
    this.resourceLoader = resourceLoader;
  }

  public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
    AnnotationAttributes mapperScanAttrs = AnnotationAttributes
        .fromMap(importingClassMetadata.getAnnotationAttributes(MapperScan.class.getName()));
    if (mapperScanAttrs != null) {
      registerBeanDefinitions(mapperScanAttrs, registry);
    }
  }

  void registerBeanDefinitions(AnnotationAttributes
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值