SpringBoot - @EnableAutoConfiguration注解使用详解

深入理解EnableAutoConfiguration原理 源码分析@EnableAutoConfiguration在SpringBoot中的加载和实例化过程 万里长征第一步,我们先理解下什么是EnableAutoConfiguration? 什么是EnableAutoConfiguration注解? 在哪? org.springframework.boot.autoconfigure.EnableAutoConfiguration EnableAutoConfiguration概述 我们先来看下源码 package org.springframewor 阅读详情

工作原理

SpringBoot通过@EnableAutoConfiguration注解开启自动配置,加载spring.factories文件中注册的各种AutoConfiguration,当某个AutoConfiguration类满足@Conditional指定的生效条件时,实例化该AutoConfiguration类中定义的Bean,注入到Spring容器中,就可以完成依赖框架的自动配置。

1。 需要和@Configuration配合使用;
2。 用于实例化依赖包中的对象;
3。 一般需要在META-INF/spring.factories中进行配置;
4。 经常用于自定义的starter中。

应用场景

@EnableAutoConfiguration,主要是用于加载Starter目录包之外的、需要Spring自动生成Bean对象的、带有@Configuration注解的类。一般用于对各种引入的spring-boot-starter依赖包指定的(spring.factories)类进行实例化。

@Configuration注解使用详解
spring.factories的作用是什么?

源码分析

@EnableAutoConfiguration是被组合到@SpringBootApplication注解中被引入的。@SpringBootApplication包含三个重要的注解,分别为:@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan。
从下面的源码可以知道,@EnableAutoConfiguration是由@AutoConfigurationPackage 和 @Import({AutoConfigurationImportSelector.class})这两个注解组成的。

@SpringBootApplication = @SpringBootConfiguration + @EnableAutoConfiguration + @ComponentScan
@EnableAutoConfiguration = @AutoConfigurationPackage + @Import({AutoConfigurationImportSelector.class})

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
    @AliasFor(
        annotation = EnableAutoConfiguration.class
    )
    Class<?>[] exclude() default {};

    @AliasFor(
        annotation = EnableAutoConfiguration.class
    )
    String[] excludeName() default {};

    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "basePackages"
    )
    String[] scanBasePackages() default {};

    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "basePackageClasses"
    )
    Class<?>[] scanBasePackageClasses() default {};

    @AliasFor(
        annotation = ComponentScan.class,
        attribute = "nameGenerator"
    )
    Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;

    @AliasFor(
        annotation = Configuration.class
    )
    boolean proxyBeanMethods() default true;
}

总结

@EnableAutoConfiguration是一个组合注解,该注解内部使用@Import注解,引入了配置类AutoConfigurationImportSelector.Class,该类是ImportSelect接口的实现类,它重写了接口中的selectImports()方法,得到一个String类型的数组。该数组是通过底层加载配置文件 META-INF/spring.factories得到的,该配置文件中定义了大量的配置类,Sringboot 启动的时候会加载所有的selector并执行selectImports方法,从而完成自动配置。不是所有的类在初始化时都可以自动加载进SpringIOC容器中,要结合@Conditional这个条件注解进行判断,待加载的配置类如果满足所有的@Conditional注解限定的条件,才会进行自动加载。

SpringBoot核心运行原理解析之-------@EnableAutoConfiguration 下面通过一张图来从整体了解AutoConfigurationImportSelector的核心功能及流程,然后再对照源码看具体的功能实现。当AutoConfigurationImportSelector被@Import注解引入之后,它的selectImports方法会被调用并执行其实现的自动装配逻辑。selectImports方法涵盖了组件自动装配的所有的处理逻辑。if(!if(! 阅读详情

相关推荐

@EnableAutoConfiguration注解

在刚刚学习springboot的过程中,根据springboot1.5版本和2.0及以上版本对比的时候,出现了@EnableAutoConfiguration这一注解的问题。 首先是1.5版本中,我首先使用的是Spring Tool Suite4的开发工具 然后是springboot2.0及以上版本,我使用的则是Intellij IDEA 2017版本的,在这个版本中如果使用1.5版本的代码写法...

qq_40915748的博客 2206

SpringBoot之@EnableAutoConfiguration注解

首先Spring Boot项目中都会如下启动类: @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 从...

charming的专栏 18万+

Spring注解篇:@EnableAutoConfiguration详解

在Java的Spring框架中,自动化配置是一个令人惊叹的特性,它极大简化了我们的开发流程。注解作为实现这一特性的关键,允许Spring根据项目中添加的依赖自动配置Bean。本文将详细探讨这一注解的工作原理及其应用。本文将深入介绍Spring框架中的注解,包括它的工作原理、如何使用、以及在实际开发中的应用场景。通过源码解析和案例分享,我们将理解其背后的强大功能,并探讨它的优缺点。是一个告诉Spring Boot根据添加的jar依赖自动配置Spring应用程序的注解。

喵手的博客 1181

【Spring】深入解析 EnableAutoConfiguration 注解:Spring Boot 自动配置的核心

在 Spring Boot 中,@EnableAutoConfiguration 注解扮演着重要的角色,它是实现自动配置功能的关键。本文将深入探讨 @EnableAutoConfiguration 注解的作用、原理和使用方法,帮助大家更好地理解 Spring Boot 的自动配置机制。

DC1020的博客 6402

ADI DSP开发环境(CCES)下的程序烧录问题(以ADSP-SC589为例)

在CCES环境下将程序烧录到flash主要有两种方式。首先在对项目编译产生文件的属性设置为Release。 在编译完成后,找到每个CORE单独生成的DXE文件: 文件通常位于项目目录下每个core的Release文件中。安装SC589评估板的驱动(ADSP-SC5xx_EZ-KIT_Lite-Rel2.0.0.exe)后,在安装目录下可以找到SPI FLASH芯片的驱动程序(sc589_w25q128fv_dpia_Core1.dxe): 把文件copy到CCES 的目录下由于SC58x处理器的特殊性

daijingxin的博客 3730

二叉树的操作之统计二叉树中节点的个数

一,问题描述 给定一颗二叉树,已知其根结点。 ①计算二叉树所有结点的个数 ②计算二叉树中叶子结点的个数 ③计算二叉树中满节点(度为2)的个数   二,算法分析 找出各个问题的基准条件,然后采用递归的方式实现。 ①计算二叉树所有结点的个数 1)当树为空时,结点个数为0,否则为根节点个数 加上 根的左子树中节点个数 再加上 根的右子树中节点的个数 借助遍历二叉树的思路,每访问一个结...

weixin_34200628的博客 4568

揭秘SpringBoot自动配置原理:如何用@EnableAutoConfiguration简化开发?

在当今的 Java 开发领域,Spring Boot 已经成为了构建企业级应用的首选框架之一。它的核心特性之一就是自动配置,而 `@EnableAutoConfiguration` 注解则是实现自动配置的关键。本文将深入探讨 Spring Boot 自动配置的原理,并详细介绍如何使用 `@EnableAutoConfiguration` 注解来简化开发过程。

梵心白莲的博客 826

企业微信/飞书/钉钉扫码连WiFi保姆级教程(附访客授权技巧)

本文提供了一份企业微信、飞书、钉钉扫码连接WiFi的实战部署教程。通过集成标准Radius协议与OAuth 2.0,企业可实现基于身份的无密码网络认证,并详细介绍了访客授权、权限分级等精细化管理技巧,有效提升无线网络的安全性与员工体验。

t4y5u6i7o的博客 1196

springboot中的@SpringBootApplication注解

@SpringBootApplication注解讲解 这个注解包含了 1.@EnableAutoConfiguration 启动自动配置 2.@ComponentScan注解 这个相当于之前的<context:component-scan /> 标签,开启注解扫描 开启组件扫描 ,相当于之前的<context:component-scan base-packag...

Ru_yin_hai的博客 305

SAP移动类型

SAP移动类型移动类型定义 移动类型定义

qq_20593197的博客 6210

何恺明团队MeanFlow论文解读:单步生成模型如何实现ImageNet 256×256的SOTA效果?

何恺明团队提出的MeanFlow框架在生成式AI领域实现重大突破,通过引入平均速度场概念,在ImageNet 256×256数据集上达到单步生成3.43 FID的SOTA效果。该技术解决了传统Flow Matching方法的积分误差累积问题,显著提升生成效率与质量,为AI图像生成应用开辟新方向。

weixin_30687051的博客 398

【SpringBoot 从入门到架构师】第3章:SpringBoot核心注解详解

/ 条件:当类路径存在 MyService 时// 条件:当容器中不存在 MyService Bean 时// 启用配置属性绑定// 在 WebMvcAutoConfiguration 之后加载@Bean@Bean// 配置属性类// 方法1:通过注解排除})// 方法2:通过配置属性排除@Indexed// Bean 名称(可选)@Component // ← 继承 @Component// 继承自 @Component 的 value 属性。

gaochufukanyongren的博客 709

使用蒙特卡洛模拟方法在MATLAB中估算居里温度: 一个详细而通俗的指南

居里温度是磁性材料失去磁性的温度。但是,计算机模拟为我们提供了一个在理论和实验之间的桥梁,使我们能够在不进行实际测量的情况下估计这一重要参数。在下一部分,我们将详细介绍蒙特卡洛迭代的核心代码,以及如何使用它来模拟磁性材料中原子的行为。在估算居里温度的上下文中,我们将使用蒙特卡洛方法来模拟磁性材料中的原子或分子的行为。通过使用蒙特卡洛方法,我们可以在MATLAB中估算居里温度,从而为理论研究和实验设计提供有价值的信息。:我们使用的是一个有限的尺寸的网格模型,这可能导致一些大小效应,特别是在接近居里温度时。

qq_38334677的博客 979

SpringBoot 自动配置原理深度解析:@EnableAutoConfiguration

有时候,我们引入了某个依赖,但不想让 SpringBoot 自动配置它(比如引入了 mybatis-spring-boot-starter,但想手动配置 MyBatis,或者项目中不需要数据源自动配置),这时候就可以通过 @EnableAutoConfiguration 的 exclude 属性,关闭指定的自动配置类。其实自动配置的本质,就是 SpringBoot 开发团队帮我们做了「重复、繁琐的配置工作」,把常用组件的配置提前写好,通过条件注解实现按需加载,让我们不用关注底层配置,专注于业务逻辑开发。

。。。 1350

32、运算放大器的工作原理与应用

本文详细介绍了运算放大器的工作原理与多种应用场景,涵盖开环与闭环放大器的基本概念、理想运算放大器的特性及其‘黄金规则’。文章深入解析了反相放大器、同相放大器、单位增益跟随器与反相器的配置和增益计算,并探讨了电压比较器及窗口比较器的工作机制。同时提供了运算放大器在实际应用中的选型流程、使用注意事项以及常见故障排查方法,帮助读者全面掌握运算放大器的设计与应用要点。

u5v6w7的博客 164

Open3D (C++) 点云边界提取【2025最新版】

Compute the boundary points of a point cloud.The implementation is inspired by the PCL implementation. Reference:https://pointclouds.org/documentation/classpcl_1_1_boundary_estimation.html

点云侠的博客 872

SpringBoot注解体系详解:从核心配置到最佳实践

SpringBoot注解体系是Java开发中的核心技术要素,通过约定优于配置的理念大幅简化了企业级应用开发。注解作为元数据标记,其核心原理基于Java反射机制和Spring框架的Bean生命周期管理。在技术价值层面,合理使用注解能显著提升开发效率,实现依赖注入、事务管理、Web端点定义等关键功能。典型的应用场景包括自动配置(@EnableAutoConfiguration)、RESTful API开发(@RestController)以及条件化Bean装配(@Conditional)。特别是在微服务架构中,

weixin_42666036的博客 302

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SpringBoot(五)@EnableAutoConfiguration注解的工作原理

目录 Demo 源码解析 1、isEnabled()方法: 2、loadMetadata()方法: 3、getAutoConfigurationEntry()方法 3.1、getAttributes()方法 3.2、getCandidateConfigurations()方法 3.3、getExclusions()方法 3.4、返回值AutoConfigurationEntry对...

yhahaha_的博客 2781

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

SpringBoot面试核心:自动装配原理、配置读取与生产部署详解

SpringBoot作为Java后端开发的主流框架,其核心设计理念是“约定大于配置”,旨在简化Spring应用的初始搭建和开发过程。其核心机制自动装配(Auto-Configuration)通过条件注解(如@ConditionalOnClass)和spring.factories文件,实现了依赖的智能导入与Bean的自动注册,极大地提升了开发效率。这一机制的技术价值在于提供了开箱即用的生产就绪功能,并成为微服务架构和云原生部署的基石。在实际应用中,开发者需掌握其外部化配置的多种读取方式(如@Configur

weixin_30312563的博客 302

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SpringBoot 核心注解解析

SpringBoot 核心注解解析 @SpringBootApplication 组合注解 一个包含多个注解的注解式组合注解 @SpringBootApplication是三个注解的组合 @ComponentScan @Configuration @EnableAutoConfiguration @ComponentScan 组件扫描 相当于spring.xml中的 context:compon...

qq_31986651的博客 392

详解 :Spring Boot 最核心的 3 个注解

作者|小明菜市场来源 |小明菜市场(ID:fileGeek)头图 | 优快云下载自东方IC前言Spring Boot 最大的特点是无需 XML 配置文件,能够实现自动装配,并...

优快云资讯 2091

【SpringBoot 自动配置】-EnableAutoConfiguration 注解

续接上回与,在前面笔者分析了在 SpringBoot 自动装配中的最重要的两个注解类,@Condition与哎~说到这里,那首先我们跟随笔者一起先回忆一下这两个注解的在 SpringBoot 当中充当什么角色呢?

qq_33827423的博客 1634

SpringBoot(含注解)详解

注解 @SpringBootApplication 申明让spring boot自动给程序进行必要的配置,这个配置等同于: @Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。 @ResponseBody 表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果

Record_Algorithm 5055

springboot常用注解详解

本文讲了springboot中常用的注解。

努力是为了让自己不平庸。。。 3543

@EnableAutoConfiguration注解原理

目录 1.@EnableAutoConfiguration注解 2.AutoConfigurationImportSelector 3.总结 前言 Spring Boot中引入了自动配置,让开发者利用起来更加的简便、快捷。比如内嵌的tomcat端口默认配置是8080,这些都属于Spring Boot自动配置的范畴,当然其自动配置相当多。 springboot框架的神奇之处在于...

凡是过往,皆为序章 1万+
上一篇: SpringBoot - Spring Security详解(二)
下一篇: SpringBoot - @PropertySource注解使用详解
cloneme01
博客等级 码龄20年 2万+粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloneme01

谢谢您的支持与鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值