Spring Boot(十) @EnableAutoConfiguration深入分析

 2019-11-02 21:06  阅读(1177)
文章分类:Spring boot

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();
        }

    }

来源:http://ddrv.cn

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Spring Boot(十) @EnableAutoConfiguration深入分析

相关推荐