• Spring如何扫描Bean的


    三种扫描并加载Bean方式

    @ComponentScan(“com.xxx”)

    当我们在springboot的启动类上面加上@ComponentScan(basePackages = {"com.xxx"})就是告诉spring去扫描根路径是:com.xxx下面的所有spring注解管理的Bean对象(其它第三方依赖jar包以com.xxx开头也会被扫描加载)将会被spring IOC容器管理。

    @Import({Xxx.class})

    当我们在springboot的启动类上面加上@Import({Xxx.class})就是告诉spring去直接加载Xxx.class的Bean对象(其它第三方依赖jar包类是Xxx.class也会被加载)将会被spring IOC容器管理。

    spring.factories

    @EnableAutoConfiguration会扫描并加载:项目中第三方依赖jar包里面resources/META-INF/spring.factories文件中的全路径类,将会被spring IOC容器管理。

    SpringBoot中默认扫描启动类所在路径下所有的bean

    通过 @SpringBootApplication 扫描项目中的 Bean

    @SpringBootApplication 注解的层次如下:

    SpringBootApplication
    	@Inherited
    	@SpringBootConfiguration
    	|	|@Configuration
    	@EnableAutoConfiguration
    	|	|@Inherited
    	|	|@AutoConfigurationPackage
    	|	|	|@Inherited
    	|	|	|@Import(AutoConfigurationPackages.Registrar.class)
    	|	|@Import(AutoConfigurationImportSelector.class)
    	@ComponentScan
    	|	|@Repeatable(ComponentScans.class)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    使用 @ComponentScan 与 @Configuration扫描指定路径下的所以类

    在这里插入图片描述

    从SpringApplication#refreshContext方法开始追踪,找到AbstractApplicationContext#invokeBeanFactoryPostProcessors方法,继续深入找到ConfigurationClassParser#doProcessConfigurationClass方法,就是从这里开始,根据ComponentScan配置的路径去加载需要spring管理的类。

    使用@Import和spring.factories加载自动配置类

    Spring Boot 通过@EnableAutoConfiguration开启自动装配,当我们的SpringBoot项目启动的时候,会先导入AutoConfigurationImportSelector,这个类会帮我们选择所有候选的配置,我们需要导入的配置都是SpringBoot帮我们写好的一个一个的配置类,那么这些配置类的位置,存在与META-INF/spring.factories文件中,通过这个文件,Spring可以找到这些配置类的位置,于是去加载其中的配置。

    img

    但是不是所有存在于spring,factories中的配置都进行加载,而是通过@ConditionalOnXXX解进行判断条件是否成立(只要导入相应的stater,条件就能成立),如果条件成立则加载配置类,否则不加载该配置类

  • 相关阅读:
    kafka详解(三)
    ElasticSearch 搜索推荐
    信必优收到中国首批成立的期货公司之一表扬信
    数字IC必学之《Skill入门教程》
    webpack:css代码提取插件extract-text-webpack-plugin和mini-css-extract-plugin
    Jconsole 开启远程连接遇到的一些坑
    数据结构入门4-2(广义表、例题)
    [PyTorch][chapter 57][WGAN-GP 代码实现]
    针对结构映射的SVM算法:核心思路解读
    汇聚荣做拼多多口碑怎么样?
  • 原文地址:https://blog.csdn.net/weixin_65349299/article/details/126896722