Spring Boot自动配置(四)

SpringBoot如何如何自动配置

SpringBoot应用程序能够实现自动配置主要是依靠一个注解:@SpringBootApplication。

package com.gwolf;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

@SpringBootApplication

public class SpringHelloMainApplication {

        

        public static void main(String[] args) throws Exception {

            SpringApplication.run(SpringHelloMainApplication.class, args);

        }

}

Spring Boot自动配置(四)从@SpringBootApplication源码可以看出是一个复合注解。

Spring Boot自动配置(四)在@SpringBootConfiguration标注在某一个类上,表示这是一个Spring Boot的配置类。

Spring Boot自动配置(四) @EnableAutoConfiguration注解表示开启自动配置功能。以前需要配置的东西,Spring Boot帮我们自动配置。

@Target(ElementType.TYPE)

@Retention(RetentionPolicy.RUNTIME)

@Documented

@Inherited

@AutoConfigurationPackage

@Import(AutoConfigurationImportSelector.class)

public @interface EnableAutoConfiguration {

        

}

Spring Boot自动配置(四)在注解EnableAutoConfiguration中导入了一个AutoConfigurationPackages.Registrar.class类。

它的作用是将主配置类的所在包及下面子包里面所有的组件扫描到Spring容器中。

Spring Boot自动配置(四) @Import(AutoConfigurationImportSelector.class)会给容器中导入非常多的自动配置类,就是给容器中导入这个场景需要的所有组件,并配置好这些组件。

Spring Boot自动配置(四)有了自动配置类,免去了我们手动编写配置注入功能组件的工作。

自动配置图解:

 

Spring Boot自动配置(四)

图片来自于王福强老师的博客:https://afoo.me/posts/2015-07-09-how-spring-boot-works.html 

参考文档以及优秀博客:

百度经验:https://jingyan.baidu.com/article/1709ad8041d4a64634c4f00e.html

Spring Boot面试杀手锏--自动配置原理:https://blog.csdn.net/u014745069/article/details/83820511

SpringBoot-自动装配原理:https://www.cnblogs.com/hhcode520/p/9450933.html