spring @Enable*注解工作原理

1.@enable*注解的工作原理

通过观察这些@enable*注解的源码,我们发现所有注解都有一个@Import注解,这个注解用来导入配置类的,这也就意味着这些自动开启的实现是导入了一些自动配置的bean.

这些导入的配置方式分为以下三种类型.

第一类:直接导入配置类

直接导入配置类SchedulingConfiguration,这个类注解了@Configuration,且注册了一个scheduledAnnotationProcessor的bean,源码如下

第二类:依据条件选择配置类

AsyncConfigurationSelector通过条件来选择需要导入的配置类,AsyncConfigurationSelector的根接口为ImportSelector,这个接口需要重写selectImports方法,在次方法内进行事先条件判断:

可以看出AdviceMode为proxy,则返回ProxyAsyncConfiguration配置类;若AdviceMode为aspectj,则返回AspectJAsyncConfiguration配置类。

第三类:动态注册Bean

AspectJAutoProxyRegistrar实现了ImportBeanDefinitionRegistrar接口,ImportBeanDefinitionRegistrar的作用是在运行时自动添加Bean到已有的配置类,通过重写方法:

其中,AnnotationMetadata参数用来获得当前配置类上的注解:BeanDefinitionRegistry参数用来注册Bean,源码如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值