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
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞