SpringBoot(五)@EnableAutoConfiguration注解的工作原理

本文详细解析了SpringBoot中@EnableAutoConfiguration注解的工作原理,包括isEnabled()、loadMetadata()和getAutoConfigurationEntry()方法。通过分析源码,介绍了如何加载第三方配置,并在META-INF/spring.factories文件中注册。文章还提供了示例代码,展示如何启用自动配置并加载自定义配置类。
摘要由CSDN通过智能技术生成

目录

Demo

源码解析

1、isEnabled()方法:

2、loadMetadata()方法:

3、getAutoConfigurationEntry()方法

3.1、getAttributes()方法

3.2、getCandidateConfigurations()方法

3.3、getExclusions()方法

3.4、返回值AutoConfigurationEntry对象

流程总结


SpringBoot版本:2.1.1

复习一下,在之前关于Spring Boot的第三篇博文中,使用EnvironmentPostProcessor接口可以加载外部配置文件,要在META-INF/spring.factories文件中注册,key是EnvironmentPostProcessor接口全类名,value是实现类的全类名。

@EnableAutoConfiguration也可以加载第三方配置,同样要在META-INF/spring.factories文件中注册,key是@EnableAutoConfiguration的全路径,value是需要加载的类或配置类的全路径,可以是普通类或者配置类,如果是配置类,里面的bean会被纳入spring容器,多个用逗号隔开。

Demo

先来看一个@EnableAutoConfiguration导入第三方配置的例子,随便建一个项目SpringBoot_OutsideConfig,然后建一个bean还有一个配置类。项目结构如下:

pom.xml如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.eastcom</groupId>
  <artifactId>SpringBoot_OutsideConfig</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <properties>
  	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  	<maven.compiler.source>1.8</maven.compiler.source>
  	<maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-context</artifactId>
  		<version>5.1.3.RELEASE</version>
  	</dependency>
  </dependencies>
</project>

OutSideBean:


public class OutSideBean {
	public OutSideBean() {
		System.out.println("===============>>>OutSideBean被创建");
	}
}

OutsideConfiguration:


public class OutsideConfiguration {
	
	@Bean
	public Runnable outsideRunnable() {
		return ()->{};
	}
}

建好以后在项目上右键-->Run As-->Maven Install。这个项目就先放一边。然后在前面的父工程下新建子项目SpringBoot_EnableAutoConfiguration。

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值