第 3 章 Spring Boot
文章目录
3.1 Spring Boot概览
3.1.1 SpringBoot发展背景
约定大于配置的理念, 解决Spring配置复杂的问题
3.1.2 Springboot特点
可以帮助开发人员快速构建出基于Spring的应用, 包含如下特性:
- 为开发者提供Spring快速入门体验
- 内嵌Tomcat和Jetty容器, 不需要再部署到Web容器中
- 提供实现自动化配置的基础设施
- 开箱即用, 没有代码生成, 也无需xml配置文件
- …
3.1.3 Springboot启动器
启动器可以看成是一系列依赖模块的组合, 也是Springboot可以快速搭建项目的实用助手, 这些启动器将不同的第三方组件依赖进行了封装组合, 形成一个易用的套件库, 常见的有:
3.2 快速入门
可以直接用IDEA创建一个Springboot项目
3.3 安装配置
Springboot支持内嵌的容器:
所以Springboot构建的Web应用可运行在任何支持Servlet3.0+及Java6.0的Web容器中。
Spring Boot 实际上是一些类库的集合, 能够被任意项目的构建系统引用; 为了方便, Spring Boot提供了一个命令行客户端运行工具(Spring Boot CLI), 可用来运行和测试Spring Boot应用
3.3.1 基于Maven环境配置
为了更容易地管理依赖版本和使用默认配置,Spring Boot提供了一个 pom 根配置,在项目工程中可以直接继承它:
<?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>
<!-- 1. 继承Spring Boot默认配置, 并指定版本号 -->
<!-- 这样在 2 处可以不用声明版本号 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<!-- 2. 添加项目所需的启动类和包 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<!-- 3. 配置运行插件 -->
<plugins>
<!-- 这个是Maven插件, 为Spring Boot提供Maven操作 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
关于第3点,可以配置项目插件, 如Maven:
双击spring-boot:run就会采用内嵌的Tomcat运行应用; 如果想使用Jetty, 只需在依赖中添加Jetty启动器(spring-boot-starter-jetty)即可
3.3.2 基于Gradle环境配置
3.3.3 基于Spring Boot CLI环境配置
3.4 持久层
演示如何使用Spring Boot提供的JDBC启动器来实现持久层
3.5 业务层
在编写业务层代码时有两个重要的思想:
- 编写正确的业务逻辑
- 对业务事务的管控
在Spring Boot中使用事务方法:
(1) 在主类 Application 上标注 @EnableTransactionManagement 注解, 这一步是开启事务支持
(2) 在访问的Service 方法上标注 @Transactional 注解即可, 如果将该注解标注在 Service类上, 那勒种所有方法都将被事务增强, 建议不要在类级别上标注
3.6 展现层
3.7 运维支持
当应用部署到生产环境时,需要各种运维相关的工具支持,如监控应用的各种性能指标、运行信息和应用状态等,Spring Boot整合了一些第三方的类库,形成了一个功能完备的启动器,Actuator。只需添加如下依赖即可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Spring Boot默认提供的健康状态监测:
- 自身应用
- 关系数据库连接
- MongoDB、Redis
- Solr、Elasticsearch
- Rabbit MQ
这些服务都可以在application.properties的management.health.*选项中配置:
# 数据库监控配置
management.health.db.enabled=true
management.health.defaults.enabled=true
# 应用磁盘空间检查配置
management.health.diskspace.enabled=true
management.health.diskspace.path=D:/masterSpring/code
management.health.diskspace.threshold=0
可以在浏览器中访问 http://localhost:8080/health 查看服务信息, 其他的还有: