文章目录
-
- [1.Spring Boot三个核心注解?](#1.Spring Boot三个核心注解?)
- 2.如何自定义一个starter?
- 3.SpringBoot自动配置原理
- 4.SpringBoot启动流程有了解过吗?
-
-
- 1.读取配置文件,初始化环境对象
- [2.创建 `ApplicationContext` 容器](#2.创建
ApplicationContext
容器) - 3.注入容器(`@ComponentScan`、`@EnableAutoConfiguration`)
- 4.依赖注入
- [5.处理 `Aware` 接口](#5.处理
Aware
接口) - [6.初始化阶段(执行 `InitializingBean` 和 `@PostConstruct`)](#6.初始化阶段(执行
InitializingBean
和@PostConstruct
)) - 7.当然还有一些监听器可以对流程进行干预,直接看run方法的源码即可
-
- 5.CAP定理有了解过吗?Base理论呢?
1.Spring Boot三个核心注解?
@SpringBootConfiguration:组合了 @Configuration 注解,实现配置文件的功能。
@EnableAutoConfiguration:打开自动配置的功能,也可以关闭某个自动配置的选项, 例如:java 如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。
@ComponentScan:Spring组件扫描。
2.如何自定义一个starter?
首先编写一个自动配置类,然后在spring.factories文件中配置使其生效,如果想要去读取配置文件就使用ConfigurationProperties指定前缀,然后在自动配置类中使用EnableConfigurationProperties启用配置类。
3.SpringBoot自动配置原理
SpringBoot的自动配置核心就是@EnableAutoConfiguration注解,这个注解有两个重要的东西:
一个是Registrar类,这个类就是为了获取到要扫描的包。
第二个就是AutoConfigurationImportSelector这个类,ImportSelector就是Spring中加载Bean的方式之一,他可以获取到加载了ImportSelector这个Bean的配置类的元数据,然后在SpringBoot中的作用其实就是加载了spring.factories这个文件,然后根据一些条件注解来完成注入容器的过程。
4.SpringBoot启动流程有了解过吗?
1.读取配置文件,初始化环境对象
2.创建 ApplicationContext
容器
3.注入容器(@ComponentScan
、@EnableAutoConfiguration
)
4.依赖注入
5.处理 Aware
接口
6.初始化阶段(执行 InitializingBean
和 @PostConstruct
)
在前后分别有BeanPostProcessorBefore和BeanPostProcessorAfter
7.当然还有一些监听器可以对流程进行干预,直接看run方法的源码即可
5.CAP定理有了解过吗?Base理论呢?
C:一致性
A:可用性
P:分区容错性
Base理论:基本可用,允许出现软状态,保证最终一致性