通俗易懂理解 @EnableAutoConfiguration

本文是参考各博主文章及语言模型总结加上自认为简洁易理解的语言而写成的,写出此文目的就是希望能通俗易懂的解释一个知识点,我希望我能写的更好一点,有什么不足希望能告诉我。

什么是 @EnableAutoConfiguration

@EnableAutoConfiguration 是 Spring Boot 中的一个注解,它可以根据你的项目中包含的依赖,自动配置应用程序所需的各种组件。例如,如果你的项目中有一个数据库依赖,Spring Boot 会自动配置数据库连接。

一句话简单理解:根据你的依赖自动配置所需的组件。

具体例子如下,重点是先理解:

这个注解@SpringBootApplication实际上包含了 @EnableAutoConfiguration,不信ctrl点进去see see:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

 maven中添加依赖:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

 .properties中添加配置:

spring.datasource.url=jdbc:h2:mem:testdb
spring.h2.console.enabled=true

用这个例子来说,就是打上 @EnableAutoConfiguration注解,Spring Boot 就会自动配置 H2 数据库。

@EnableAutoConfiguration 和 @Configuration 的区别

@Configuration

  • 定义@Configuration 注解用于定义一个配置类,这个类可以包含一个或多个 @Bean 方法。这些方法会返回一个对象,该对象会被 Spring 容器管理。
  • 使用场景当你需要手动创建和配置 Bean 时,通常会使用 @Configuration 注解。例如,定义数据源、服务等。
  • @Configuration
    public class AppConfig {
    
        @Bean
        public MyService myService() {
            return new MyService(myRepository());
        }
    
        @Bean
        public MyRepository myRepository() {
            return new MyRepository();
        }
    }

@EnableAutoConfiguration 

         

定义@EnableAutoConfiguration 注解用于启用 Spring Boot 的自动配置功能。它会根据项目中引入的依赖和特定条件自动配置 Bean。

        

使用场景:通常在 Spring Boot 应用的入口类上使用,以便自动配置各种组件,例如数据库连接、消息队列等。它会扫描 META-INF/spring.factories 文件( 版本若是较新,会在META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports中,换汤不换药,都一样的东西,找出需要自动配置的类。

 spring.factories或AutoConfiguration.imports,里面装的都是第三方依赖的类的全限定名。

org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration

更具一点的作用就是,包含该@EnableAutoConfiguration 的@SpringBootApplication就可以读取spring.factories/AutoConfiguration.imports中的类(其中的类都会带有@Configuration),并在启动时自动注入IOC容器

强调一下:第三方依赖(即starter中的类),非当前模块拥有的;

这个总结挺好:

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值