SpringBoot自动配置机制

SpringBoot框架最重要的目标之一就是简化基于Spring的开发,因此SpringBoot提供了一系列的特性来实现这个目的,其中比较重要的有自动配置机制,日志和属性配置等。

SpringBoot自动配置机制

SpringBoot自动配置机制从核心上可以总结为以下两点:

1.通过@EnableAutoConfiguration为基于Spring的应用开启自动配置机制。

2.通过一系列的@Conditional完成自动配置机制的实现。

首先,@EnacleAutoConfigutation注解可以让Spring开启自动配置机制。开启之后,Spring在系统启动时就会通过自动扫描项目class目录下所包含的依赖包,以及依赖的条件自动注册Bean,从而构建Spring的应用上下文(ApplicationContext)。

在Spring-boot-autoconfigure-[version].jar中包含了一系列标注了@Configuration的自动配置类。

这些类中还有@EnableConfigurationProperties注解,用来指定自动配置的一些条件。

这些自动配置类则根据所扫描到的依赖包,通过对所注解的@Condition条件来决定是否开启并注册到Spring上下文中。

@Condition则可以根据一系列条件来决定是否启用某项配置,这些条件可以是:

在classpath下是否存在指定的类;

在ApplicationContext中是否已存在指定类型的Bean;

在指定目录下是否存在指定的文件;

在配置文件中是否配置了指定的属性;

指定的系统属性是否存在或不存在;

......

另外还SpringBoot还提供一些开箱即用的条件注解:

@ConditionOnBean:在ApplicationContext中存在指定类型的Bean时启用;

@ConditionOnMissingBean:在ApplicationContext中不存在指定类型的Bean时启用;

@ConditionOnClass:在classpath下存在指定类时启用;

@ConditionOnMissingClass:在classpath下不存在指定类时启用;

@ConditionOnProperties:当存在指定属性配置时启用;

......

最终在SpringBoot启动(引导)类上标注的@SpringBootAppcalition注解继承了@EnableAutoConfiguration,SpringBoot就已经为应用默认启动了自动配置机制。

你可能感兴趣的:(Java学习笔记,spring,boot,spring,java)