您的位置:首页 > 财经 > 产业 > 数字营销沙盘模拟_香港疫情_企业文化建设_无锡seo网络推广

数字营销沙盘模拟_香港疫情_企业文化建设_无锡seo网络推广

2025/10/28 18:47:48 来源:https://blog.csdn.net/weixin_49822811/article/details/128705251  浏览:    关键词:数字营销沙盘模拟_香港疫情_企业文化建设_无锡seo网络推广
数字营销沙盘模拟_香港疫情_企业文化建设_无锡seo网络推广

SpringBoot自动装配原理

  • Spring和SpringBoot的关系和区别
  • SpringBoot的核心注解
    • @SpringBootApplication注解:
  • SpringBoot自动配置原理
    • 自己理解的:
    • 网上统一概述的:

Spring和SpringBoot的关系和区别

SpringBoot是Spring生态中的产品
Spring是一个容器框架
SpringBoot不是一个框架、他是一个可以快速架构,基于Spring的脚手架(里面包含了Spring和各种框架,为开发Spring生态其他框架铺平道路)

SpringBoot的核心注解

@SpringBootApplication注解:

这个注解标识了一个SpringBoot工程,它实际上是另外三个注解的组合,这三个注解分别是:

  1. @SpringBootConfiguration:这个注解实际就是一个@Configuration,标记当前类是个配置类;
  2. @EnableAutoConfiguration:向Spring容器中导入了一个Selector,用来加载类路径下 Spring容器中所定义的自动配置类,将这些类加载为配置Bean;
  3. @Conditional也很关键,如果没有它我们无法在自定义应用中进行定制开发:
    • @ConditionalOnBean
    • @ConditionalOnClass
    • @ConditionalOnExpression
    • @ConditionalOnMissingBean
    • 。。。 。。。 。。。

其它例如 @Configuration、@Bean、@Import 。这些在SpringBoot中较为常见的注解 其实是Spring提供的,并不属于SpringBoot注解

SpringBoot自动配置原理

自己理解的:

  1. 通过类中的@SpringBootApplication注解(该注解是个组合注解 同时标注该类是启动类)
  2. @SpringBootApplication组合注解中的@EnableAutoConfiguration注解,通过@Import引入了AutoConfigurationImportSelector服务,该服务实现了DeferredImportSelector(延迟导入),去导入一些Bean组件(通过重写ImportSelector服务中的selectImports方法是实现 具体步骤如下
    (1)(具体实现是:selectImports方法中调用了getAutoConfigurationEntry方法,在该方法中,会通过getCandidateConfigurations方法通过SpringFactoriesLoader中的loadFactoryNames方法调用loadSpringFactories 获取所有的候选配置类(所有 META-INF/spring.factories路径下的所有文件找出来,然后根据EnableAutoConfiguration的完整类路径初筛一遍(loadFactoryNames方法入参时一步一步带入进来的筛选路径))))
    (2)selectImports方法中调用了getAutoConfigurationEntry方法,在该方法中通过getCandidateConfigurations方法获取完初次筛选后的配置类后再通过getConfigurationClassFilter().filter()筛选有效启动的自动配置类(根据@ConditionalOnBean、@ConditionalOnClass等注解排除无效的自动配置类)

网上统一概述的:

  1. 通过@SpringBootApplication引入@EnableAutoConfiguration(负责启动自动配置功能)
  2. 通过@EnableAutoConfiguration引入@Import
  3. Spring容器启动是,加载IOC容器会解析@import注解
  4. @Import导入了一个DeferredImportSelector(在解析配置类时只是将其加入到一个容器中,等到所有的配置类都解析完成后才会处理DeferredImportSelector。它会使SpringBoot的自动配置类顺序排在最后,这样方便我们扩展和覆盖)
  5. 然后读取所有的/META-INF/spring.factorles文件(SPI)
  6. 过滤出所有AutoConfigurtionClass类型的类
  7. 最后通过@ConditionalOn*** 排除无效的自动配置类

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com