spring boot @Enable*

Enable特性:

@Import(Xxxx.class)//关键点,使用Import注解,再回调。Xxxx.class是一个配置类

Xxxx implements ImportSelector

    selectImports  //把我们传入的类数组进行装配

Xxx implenments ImportBeanDefinitionRegistrar

  registerBeanDefinitions

demo参考链接的第三种方式:

https://www.cnblogs.com/lql6/p/11805876.html

1)@EnableAsync开始说起

①新建一个for循环输出,添加@Async允许其异步执行

 ②输出时,若不添加@EnableAsync则不能够实现异步执行上图的方法。

 查看@EnableAsunc注解,内部回调@Import

 2)注解装配一个监控器的实现来看Enable特性

 ①首先自定义一个注解。

 ②用@Import导入ScannerPackageRegistar类,该类实现了ImportBeanDefinitionRegistrar中的registerBeanDefinitions方法,

先获取自定义注解中的指定扫描的类数组(启动类处写入),BeanDefinitionRegistry实现了动态装配,并且回调MyBeanDefinitionProcessor

ImportBeanDefinitionRegistrar参考链接:https://blog.csdn.net/jiachunchun/article/details/94569246

https://www.jianshu.com/p/2b993ced6a4c

(1)自定义一个注解,扫描类的地址

 (2)通过importingClassMetadata.getAnnotationAttributes获取自定义注解packages里面定义的类的数组,存储到attrs中,强转成List集合。

 (3)当类要装配到spring容器中去的时候,是需要经过BeanPostProcessor的,所以在这里重写BeanPostProcessor,以达到监控类往spring装配的过程。

 (4)启动类

 

猜你喜欢

转载自www.cnblogs.com/lql6/p/11806469.html