Spring Boot(十) @EnableAutoConfiguration深入分析

 0. @EnableAutoConfiguration

1.@EnableAutoConfiguration 作用:从classpath中搜索所有
META-INF/spring.factories配置文件。然后,将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration key对应的配置项加载到spring容器。

2.只有
spring.boot.enableautoconfiguration=true(默认为true)时,才启用自动装配。

   @EnableAutoConfiguration 还可以进行排除,排除有2中方式。一是根据
class来排除
(exclude),二是根据
class name来排除
(excludeName)

3.其内部实现的关键点有

1:
ImportSelector 该接口的方法的返回值都会纳入到spring容器中管理

2:
SpringFactoriesLoader 该类可以classpath中搜索所有META-INF/spring.factories配置文件,并读取配置

 1. @EnableAutoConfiguration(一)—-自动装配bean

1.在classpath下 创建 META-INF/spring.factories配置文件

1.在 配置文件里

key:org.springframework.boot.autoconfigure.EnableAutoConfiguration

value:要添加的bean(或bean的配置文件)

如:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.edu.core.bean.RunableConfiguration

2.应用

@EnableAutoConfiguration
@ComponentScan
public class App {
    public static void main(String[] args) {
        ConfigurableApplicationContext context=SpringApplication.run(App.class, args);
        System.out.println(context.getBeansOfType(Gson.class));
        context.close();
    }
}	

 2. @EnableAutoConfiguration(二)—-可以是外部项目的类(但是要添加该项目的依赖)

1.创建一个新的maven项目 core-bean,只添加一个依赖

        <groupId>com.edu.core</groupId>
        <artifactId>core-bean</artifactId>
        <version>1.0.0</version>
        <packaging>jar</packaging>
        //...
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.2.RELEASE</version>
        </dependency>
        //...

2.在主项目里添加 core-bean 的依赖

        <dependency>
            <groupId>com.edu.core</groupId>
            <artifactId>core-bean</artifactId>
            <version>1.0.0</version>
        </dependency>

3.其他的和@EnableAutoConfiguration(一) 一样

 3.springboot 默认在项目开启时会自动装配 Gson.class。如果没有Gson的bean,则会自动生成一个Gson的bean。如果有,则使用已有的。

@Configuration
@ConditionalOnClass(Gson.class)
public class GsonAutoConfiguration {


    @Bean
    @ConditionalOnMissingBean
    public Gson gson() {
        return new Gson();
    }


}

    原文作者:Spring Boot
    原文地址: https://blog.csdn.net/lzj470612639/article/details/81056952
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞