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