spring-boot 启动自动加载配置的原理相关

本文深入探讨了Spring Boot启动时自动配置的原理,重点分析了@SpringBootApplication注解、@EnableAutoConfiguration的@Import和SpringFactoriesLoader的角色。还介绍了DataSourceAutoConfiguration的配置细节,包括条件注解@ConditionalOnClass的工作方式。
摘要由CSDN通过智能技术生成

    spring-boot 自动加载的原理

概述:

spring-boot项目中,我们只要创建一个启动类并且标注@SpringBootApplication注解,就可以完成自动化的配置,这其中的原理,主要就是@SpringBootApplication注解的作用,下面我们详细分析下这个注解。

 一、SpringBootApplication注解

@SpringBootApplication注解主要包装了三个子注解如下:
@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class))
public @interface SpringBootApplication {
  

其中@ComponentScan用来扫描包的作用,@SpringBootConfiguration是@Configuration的包装,@Configuration又是@Component的包装  表示这个类是一个配置类。
        
@EnableAutoConfiguration注解是我们主要分析的对象。

	@Target(ElementType.TYPE)
	@Retention(RetentionPolicy.RUNTIME)
	@Documented
	@Inherited
	@AutoConfigurationPackage
	@Import(EnableAutoConfigurationImportSelector.class)
	public @interface EnableAutoConfiguration 

此注解主要起作用的有2个,一个是@AutoConfigurationPackage,一个是@Import(重点分析)

我们知道@Import除了加载指定class的类,还可以指定ImportSelector实现的子类,这个接口方法selectImports,返回的列表即是这个@Import注解需要加载的类。

EnableAutoConfigurationImportSelector的具体实现。

public String[] selectImports(AnnotationMetadata metadata) {
			try {
				AnnotationAttributes attributes = getAttributes(metadata);
				List<String> configurations = getCandidateConfigurations(metadata,
						attributes); // 加载候选的配置类
				// ....略
				return configurations.toArray(new String[configurations.size()]);
			}
			catch (IOException ex) {
		
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值