SpringBoot
# SpringBoot
# SpringBoot简介
SpringBoot是Spring家族中的一个子项目,也是Spring的一员。用于简化Spring应用的初始搭建以及开发过程。提供了一套默认的配置,约定优于配置。帮助开发者快速搭建Spring应用,极大提高了开发效率,再也不用为配置文件编写大量的XML配置了。
# SpringBoot优点
- 通过官方Spring Initalizr快速创建SpringBoot应用,只需要选择需要的模块,无需手动创建项目。
- SpringBoot内嵌了Tomcat,Jetty,Undertow等容器,可以不用再为项目部署配置Tomcat服务器。直接运行jar包即可。
- SpringBoot提供了自动配置功能可以自动配置Spring应用;提供了一系列的Starter,可以快速集成框架。
- SpringBoot允许通过yaml管理配置,比properties配置更加简洁。
- SpringBoot提供了一系列的Actuator,可以帮助开发者监控SpringBoot应用,比如健康检查,审计,统计。
- 配合SpringCloud,可以快速搭建分布式系统。
# SpringBoot自动配置原理
在Spring中,自动装配是指容器利用反射,根据Bean的依赖关系,自动将Bean装配到相应的属性中。
在SpringBoot中,通过@EnableAutoConfiguration注解,开启自动配置功能。 为了进一步简化,SpringBoot提供了一个注解@SpringBootApplication。这个注解包含@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三个注解。
# @SpringBootConfiguration
表示当前类是一个配置类,相当于一个xml文件。 由@Configuration注解修饰。
# @EnableAutoConfiguration
开启自动配置功能。 它是一个组合注解,包含@AutoConfigurationPackage和@Import(AutoConfigurationImportSelector .class)。
AutoConfigurationImportSelector.class是SpringBoot自动配置的核心。
它实现了ImportSelector接口,该接口的selectImports方法返回一个字符串数组。 实际调用getAutoConfigurationEntry方法,返回一个AutoConfigurationEntry。 读取META-INF/spring.factories文件,获取所有自动配置类。
# @ComponentScan
扫描当前类所在的包及其子包下的所有组件。
# 怎么自定义一个SpringBoot Starter
- 创建Maven项目,添加依赖。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>${spring.boot.version}</version>
</dependency>
</dependencies>
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 创建一个配置属性类
@ConfigurationProperties(prefix = "mystarter")
public class MyStarterProperties {
private String message = "这个一个配置属性类";
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 创建自动配置类,在src/main/java
@Configuration
@EnableConfigurationProperties(MyStarterProperties.class)
public class MyServiceAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public MyService myService(MyStarterProperties properties) {
return new MyService(properties.getMessage());
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
- 创建简单的服务类
public class MyService {
private final String message;
public MyService(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
- 配置 spring.factories,在 src/main/resources/MATE-INF 创建spring.factories文件
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.qouson.mystarter.autoconfigure.MyServiceAutoConfiguration
1
2
2
- mvn clean install打包,发布到本地仓库。
- 创建新的SpringBoot项目,导入依赖
- 配置application.yml,测试
# Spring Boot启动流程

编辑 (opens new window)
上次更新: 2024/06/01, 23:33:02