Spring Boot的自动配置

一、Spring Boot简单介绍

1.简介

Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的、产品级别的应用。

Spring Boot官方网址

2.优点

① 快速创建独立运行的Spring项目以及与主流框架集成

② 使用嵌入式的Servlet容器,应用无需打成WAR包

③ starters自动依赖与版本控制

④ 大量的自动配置,简化开发,也可修改默认值

⑤ 无需配置XML,无代码生成,开箱即用

⑥ 准生产环境的运行时应用监

⑦ 与云计算的天然集成

3.缺点

入门容易,精通难。

二、Spring Boot自动配置探究

① spring-boot-starter

Spring Boot场景启动器。Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter,相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器。

② @SpringBootApplication

来标注一个主程序类,说明该类是Spring Boot的主配置类,Spring Boot就应该运行这个类的main方法来启动Spring Boot应用。

1
2
3
4
5
6
7
8
9
10
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
③ @SpringBootConfiguration

标注在某个类上,说明该类是一个Spring Boot的配置类。该注解内部包含@Configuration,@Configuration内部包含@Component。

④ @EnableAutoConfiguration

开启自动配置功能。对于以前我们需要手动设置的基本配置,Spring Boot会帮我们自动配置。

1
2
3
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {

@AutoConfigurationPackage:自动配置包。

@Import(AutoConfigurationImportSelector.class):Spring的底层注解@Import,给容器中导入一个组件。

EnableAutoConfigurationImportSelector:导入组件的选择器。将所有需要导入的组件以全类名的方式返回,随后这些组件就会被添加到容器中。它会给容器中导入非常多的自动配置类(xxxAutoConfiguration),即给容器中导入这个场景需要的所有组件, 并配置好这些组件。有了自动配置类,免去了我们手动编写配置注入功能组件等的工作。

1
2
@Import(AutoConfigurationPackages.Registrar.class)
public @interface AutoConfigurationPackage {

@Import(AutoConfigurationPackages.Registrar.class):

导入的内容由AutoConfigurationPackages.Registrar.class实现:将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器。

三、Spring Boot自动配置总结

Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,使自动配置生效。

Spring Boot将J2EE的自动配置都整合在spring-boot-autoconfigure-2.1.6.RELEASE.jar中。

自动配置类

0%