SpringBoot源码简单解析
# SpringBoot源码简单解析
spring-boot-starter-web :帮我们导入了web模块正常运行所依赖的组件;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
1
2
3
4
2
3
4
出厂默认就写好了很多starter,如:
- spring-boot-starter-activemq
- spring-boot-starter-aop
- spring-boot-starter-data-redis
- spring-boot-starter-data-solr
重要提示:Spring Boot将所有的绝大部分框架整合场景都进行了抽取,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关整合所需的依赖都会导入进来。
# 1、SpringBootApplication
@SpringBootApplication
用于标识spring boot
应用程序,代表该类是一个spring boot
启动类
Spring boot
运行这个类的main
方法时启动SpringBoot
应用。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
@SpringBootConfiguration
: Spring Boot的配置类。标注在类上表示是一个Spring Boot的配置类.@Configuration
:配置类上来标注这个注解。配置类相当于配置文件。配置类也是容器中的一个组件。@Component把组件实例化到spring容器中。@EnableAutoConfiguration
:开启自动配置功能;当我们需要Spring Boot帮我们自动配置所需要的配置,@EnableAutoConfiguration
告诉Spring Boot开启自动配置功能,这样Spring Boot会自动配置好并使之生效。@AutoConfigurationPackage:自动配置包
@Import(AutoConfigurationPackages.Registrar.class)
- Spring的底层注解@Import,给容器中导入一个组件。导入的组件由AutoConfigurationPackages.Registrar.class。将主配置类(标注@SpringBootApplication注解的类)的所在目录的包及下面所有子包里面的所有组件扫描到Spring容器。
@Import(EnableAutoConfigurationImportSelector.class) 给容器中导入组件。
EnableAutoConfigurationImportSelector:组件的选择器。
- 将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中。 组件的选择器给容器中导入非常多的自动配置类(xxxAutoConfiguration),给容器中导入这个场景需要的所有组件,并配置好这些组件。
编辑 (opens new window)