SpringBoot中的@EnableAutoConfiguration注解解析

 更新时间:2023年09月09日 11:12:21   作者:沐雨金鳞  
这篇文章主要介绍了SpringBoot中的@EnableAutoConfiguration注解解析,@EnableAutoConfiguration也是借助@Import的帮助,将所有符合自动配置条件的bean定义注册到IoC容器,需要的朋友可以参考下

SpringBoot中的@EnableAutoConfiguration注解

借助@Import的支持,收集和注册特定场景相关的bean定义。

@EnableAutoConfiguration也是借助@Import的帮助,将所有符合自动配置条件的bean定义注册到IoC容器,仅此而已!

@EnableAutoConfiguration会根据类路径中的jar依赖为项目进行自动配置,如:添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring MVC的依赖,Spring Boot会对Tomcat和Spring MVC进行自动配置。

@EnableAutoConfiguration作为一个复合Annotation,其自身定义关键信息如下:

@SuppressWarnings("deprecation")
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(EnableAutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
    ...
}

最关键的要属@Import(EnableAutoConfigurationImportSelector.class),借助EnableAutoConfigurationImportSelector,@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。

就像一只“八爪鱼”一样,借助于Spring框架原有的一个工具类:SpringFactoriesLoader的支持,@EnableAutoConfiguration可以智能的自动配置功效才得以大功告成!

SpringFactoriesLoader属于Spring框架私有的一种扩展方案,其主要功能就是从指定的配置文件META-INF/spring.factories加载配置。

从classpath中搜寻所有的META-INF/spring.factories配置文件,并将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的配置项通过反射(Java Refletion)实例化为对应的标注了@Configuration的JavaConfig形式的IoC容器配置类,然后汇总为一个并加载到IoC容器。 

到此这篇关于SpringBoot中的@EnableAutoConfiguration注解解析的文章就介绍到这了,更多相关@EnableAutoConfiguration注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用maven的profile构建不同环境配置的方法

    使用maven的profile构建不同环境配置的方法

    这篇文章主要介绍了使用maven的profile构建不同环境配置的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 一文搞懂如何实现Java,Spring动态启停定时任务

    一文搞懂如何实现Java,Spring动态启停定时任务

    定时任务的应用场景十分广泛,如定时清理文件、定时生成报表、定时数据同步备份等。本文将教你实现Java、Spring动态启停定时任务,感兴趣的可以学习一下
    2022-06-06
  • MapReduce核心思想图文详解

    MapReduce核心思想图文详解

    今天小编就为大家分享一篇关于MapReduce核心思想图文详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • java8中forkjoin和optional框架使用

    java8中forkjoin和optional框架使用

    这篇文章主要介绍了java8中forkjoin和optional框架使用心得以及用法讲解,需要的朋友参考下吧。
    2017-12-12
  • 使用Spring Boot搭建Java web项目及开发过程图文详解

    使用Spring Boot搭建Java web项目及开发过程图文详解

    这篇文章主要介绍了使用Spring Boot搭建Java web项目及开发过程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • JDK动态代理提高代码可维护性和复用性利器

    JDK动态代理提高代码可维护性和复用性利器

    这篇文章主要为大家介绍了JDK动态代理提高代码可维护性和复用性利器,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • springBoot项目常用目录解读

    springBoot项目常用目录解读

    这篇文章主要介绍了springBoot项目常用目录解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Java使用BIO和NIO进行文件操作对比代码示例

    Java使用BIO和NIO进行文件操作对比代码示例

    这篇文章主要介绍了Java使用BIO和NIO进行文件操作对比代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Java中抽象类和接口的区别_动力节点Java学院整理

    Java中抽象类和接口的区别_动力节点Java学院整理

    java抽象类和接口最本质的区别是接口里不能实现方法--接口中的方法全是抽象方法。抽象类中可实现方法--抽象类中的方法可以不是抽象方法,下文给大家简单介绍下,需要的的朋友参考下
    2017-04-04
  • Spring controller校验入参的方法详解

    Spring controller校验入参的方法详解

    项目中使用Springboot,在Controller中配置了@NotNull和@Valid,@Notnull不生效,@Valid生效,返回http status为400,本文给大家介绍了Spring controller校验入参的方法,需要的朋友可以参考下
    2024-06-06

最新评论