为什么要用SpringBoot?

Spring作为J2EE的轻量级代替品,让我们无需开发重量级的Enterprise JavaBean(EJB),通过依赖注入和面向切面编程,使用简单的Java对象(POJO)即可实现EJB的功能。

虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。即使后来Spring引入了基于注解的组件扫描和基于Java的配置,让它看上去简洁不少,但Spring还是需要不少配置。除此之外,项目的依赖管理也很麻烦,我们无法确保各个版本的依赖都能兼容。

SpringBoot是为了解决Spring的上述问题而产生的。

SpringBoot从本质上来说就是Spring,它通过了一些自己的特性帮助我们简化了Spring应用程序的开发。主要有以下三个核心特性:

  • 自动配置:对于很多Spring应用程序常见的应用功能,SpringBoot能自动提供相关配置,集成功能开发者仅需很少的配置。
  • 起步依赖:告诉SpringBoot需要什么功能,它就能引入对应的库,无需考虑该功能依赖库的版本问题。
  • Actuator:可以深入了解SpringBoot应用程序内部情况,比如创建了哪些Bean、自动配置的决策、应用程序的状态信息等。

使用Maven构建SpringBoot项目

SpringBoot项目可以使用Maven进行构建。

首先我们需要继承spring-boot-starter-parent这个父依赖,父依赖可以控制所有SpringBoot官方起步依赖的版本,接下来当我们使用官方起步依赖时,就不用指定版本号了。我们还需要使用SpringBoot的插件,该插件主要用于将应用打包为可执行Jar。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.macro.mall</groupId>
<artifactId>mall-tiny-boot</artifactId>
<version>1.0-SNAPSHOT</version>
<name>mall-tiny-boot</name>
<description>Demo project for Spring Boot</description>

<!--继承SpringBoot父项目,控制所有依赖版本-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<!--SpringBoot起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<!--SpringBoot插件,可以把应用打包为可执行Jar-->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

在使用起步依赖。当我们使用SpringBoot需要整合Web相关功能时,只需在pom.xml中添加一个起步依赖即可。

起步依赖将spring的多个依赖整合在一起,让开发者不必再手动添加许多其它依赖。

如果是Spring项目的话,我们需要添加很多依赖,还需要考虑各个依赖版本的兼容性问题,是个相当麻烦的事情。

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

SpringBoot Actuator

Spring Boot Actuator 是 Spring Boot 框架中的一个核心模块,主要用于增强应用程序的监控和管理能力。这个模块为基于 Spring Boot 构建的应用程序提供了丰富的生产级别的特性。

Actuator提供了大概20个端点,常用端点路径及描述如下:

路径 请求方式 描述
/beans GET 描述应用程序上下文里全部的Bean,以及它们之间关系
/conditions GET 描述自动配置报告,记录哪些自动配置生效了,哪些没生效
/env GET 获取全部环境属性
/env/{name} GET 根据名称获取特定的环境属性
/mappings GET 描述全部的URI路径和控制器或过滤器的映射关系
/configprops GET 描述配置属性(包含默认值)如何注入Bean
/metrics GET 获取应用程序度量指标,比如JVM和进程信息
/metrics/{name} GET 获取指定名称的应用程序度量值
loggers GET 查看应用程序中的日志级别
/threaddump GET 获取线程活动的快照
/health GET 报告应用程序的健康指标,这些值由HealthIndicator的实现类提供
/shutdown POST 关闭应用程序
/info GET 获取应用程序的定制信息,这些信息由info打头的属性提供

Actuator的根端点的访问路径为:http://localhost:8088/actuator

上面的端点访问可以将表格中的路径字段追加在根端点后面。