1.5.5 常用的监控终端
在百度搜索“springboot actuator”即可找到如下表格。
第2章 Spring Boot 重要用法
2.1自定义异常页面
对于 404、405、500 等异常状态,服务器会给出默认的异常页面,而这些异常页面一般
都是英文的,且非常不友好。我们可以通过简单的方式使用自定义异常页面,并将默认状态
码页面进行替换。
直接在前面程序上修改即可,无需创建新的工程。
2.1.1 定义目录
在 src/main/resources 目录下再定义新的目录 public/error,必须是这个目录名称。
2.1.2 定义异常页面
在 error 目录中定义异常页面。这些异常页面的名称必须为相应的状态码,扩展名为 html。
2.2单元测试
2.2.1 定义工程
直接在前面工程中修改即可。
2.2.3 定义 Service 两个实现类
注意,实现类上要添加@Service 注解,以交给 Spring 容器来管理。
2.2.4 修改测试类
打开 src/test/java 中的测试类,在其中直接添加测试方法即可。
2.3多环境选择
2.3.1 什么是多环境选择
以下两种场景下需要进行“多环境选择”。
(1) 相同代码运行在不同环境
在开发应用时,通常同一套程序会被运行在多个不同的环境,例如,开发、测试、生产
环境等。每个环境的数据库地址、服务器端口号等配置都会不同。若在不同环境下运行时将
配置文件修改为不同内容,那么,这种做法不仅非常繁琐,而且很容易发生错误。
此时就需要定义出不同的配置信息,在不同的环境中选择不同的配置。
(2) 不同环境执行不同实现类
在开发应用时,有时不同的环境,需要运行的接口的实现类也是不同的。例如,若要开
发一个具有短信发送功能的应用,开发环境中要执行的 send()方法仅需调用短信模拟器即可,
而生产环境中要执行的 send()则需要调用短信运营商所提供的短信发送接口。
此时就需要开发两个相关接口的实现类去实现 send()方法,然后在不同的环境中自动选
择不同的实现类去执行
2.3.2 需求
下面将实现如下功能:存在开发与生产两种环境,不同环境使用不同配置文件,不同环
境调用不同接口实现类。使用不同端口号对不同的配置文件加以区分。
2.3.3 多配置文件实现方式
(1) 定义工程
复制前面打为 Jar 包的工程,并重命名为 03-multiEnv。
(2) 定义配置文件
A、定义多个配置文件
在 src/main/resources 中再定义两个配置文件,分别对应开发环境与生产环境。
B、 说明
在 Spring Boot 中多环境配置文件名需要满足 application-{profile}.properties 的格式,其
中{profile}为对应的环境标识,例如,
application-dev.properties:开发环境
application-test.properties:测试环境
application-prod.properties:生产环境
至于哪个配置文件会被加载,则需要在 application.properties 文件中通过
spring.profiles.active 属性来设置,其值对应{profile}值。例如,spring.profiles.active=test 就会
加载 application-test.properties 配置文件内容。
在生产环境下,application.properties 中一般配置通用内容,并设置 spring.profiles.active
属性的值为 dev,即,直接指定要使用的配置文件为开发时的配置文件,而对于其它环境的
选择,一般是通过命令行方式去激活。配置文件 application-{profile}.properties 中则配置各个
环境的不同内容。
(6) 在命令行下选择环境
将工程打为 Jar 包后,在命令行运行。若要想切换运行环境,必须要修改主配置文件吗?
答案是否定的。只需添加一个命令参数即可动态指定。
B、 说明
在命令行中添加的参数可以是写在配置文件中的任意属性。其原理是命令行设置的属性
值的优选级高于配置文件的。
2.3.4 单配置文件实现方式
这种实现方式只能使用 application.yml 文件,使用 application.properties 文件好像文件
本身就会出错。
(1) 定义工程
复制前面的 3-multiEnv 工程,并重命名为 03-multiEnv2。
(2) 修改配置文件
将原有的配置文件全部删除,然后定义 application.yml 文件。需要注意的是,这三部分
之间是由三个减号(
-)分隔的,必须是三个。而这三部分充当着之前的三个配置文件。
(3) 运行与访问
运行与访问方式与前面的多配置文件的完全相同。
2.4读取自定义配置
自定义配置,可以是定义在主配置文件 application.properties 中的自定义属性,也可以
是自定义配置文件中的属性。
2.4.1 读取主配置文件中的属性
(1) 定义工程
复制前面打为 Jar 包的工程,并重命名为 04-customConfig。
2.4.2 读取指定配置文件中的属性
一般情况下,主配置文件中存放系统中定义好的属性设置,而自定义属性一般会写入自
定义的配置文件中。也就是说,Java 代码除了可以读取主配置文件中的属性外,还可以读取
指定配置文件中的属性,可以通过@PropertySource 注解加载指定的配置文件。
2.4.3 读取对象属性
(1) 定义工程
复制 04-customConfig2 工程,并重命名为 04-customConfig3。
(2) 修改自定义配置文件
2.4.4 读取 List<String>属性
(1) 定义工程
复制 04-customConfig3 工程,并重命名为 04-customConfig4。
(2) 导入依赖
注解@ConfigurationProperties 注解需要以下依赖。
(3) 创建 index.jsp
A、指定 web 资源目录
在 spring boot 工程中若要创建 jsp 文件,一般是需要在 src/main 下创建 webapp 目录,
然后在该目录下创建 jsp 文件。但通过 Alt + Insert 发现没有创建 jsp 文件的选项。此时,需
要打开 Project Structrue 窗口,将 webapp 目录指定为 web 资源目录,然后才可以创建 jsp
文件。
2.5.2 使用物理视图
(1) 添加 jasper 依赖
在 pom 中添加一个 Tomcat 内嵌的 jsp 引擎 jasper 依赖。jsp 引擎是用于解析 jsp 文件的,
即将 jsp 文件解析为 Servlet 是由 jsp 引擎完成的。embed,嵌入。
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
(2) 注册资源目录
在 pom 文件中将 webapp 目录注册为资源目录。
2.6Spring Boot 中使用 MyBatis
2.6.1 总步骤
导入依赖:MySQL 驱动、Druid 依赖、MyBatis 与 Spring Boot 整合依赖、Lombok 依赖
在 Service 接口实现类上添加@Service 注解
在 Dao 接口上添加@Mapper 注解
在 pom 中将 dao 目录注册为资源目录
在配置文件中注册映射文件、实体类别名,及数据源
2.6.2 需求
完成一个简单的注册功能。
2.6.3 定义工程
复制 06-jsp 工程,并重命名为 07-mybatis。
3.7路径问题基础理论
3.7.1 路径的构成
路径由两部分构成:资源路径与资源名称。即
路径 = 资源路径 + 资源名称
资源路径与资源名称的分水岭为:路径中的最后一个斜杠。斜杠的前面部分称为资源路
径,后面部分称为资源名称。
例如:
请求路径:http://localhost:8080/xxx/test/index
资源路径:http://localhost:8080/xxx/test
资源名称:index
3.7.2 路径的分类
根据是否可以唯一的定位一个资源,可以将路径划分为两类:绝对路径与相对路径。
绝对路径:可以唯一的定位一个资源的路径。在 Web 应用中,一般使用 URL 形式表示。
相对路径:仅依赖此路径无法唯一定位资源,但若为其指定一个参数路径,则可以将其
转换为一个绝对路径,这样的路径称为相对路径。在 Web 应用中,一般使用 URI 形式
表示。
转换关系: 绝对路径 = 参照路径 + 相对路径
3.7.3 绝对路径分类
根据路径作用的不同,可以将绝对路径分为:资源定义路径,与资源请求路径。
资源定义路径:用于表示资源位置的路径。
资源请求路径:客户端所发出的对指定资源的请求路径。 快速开发框架 Spring Boot
主讲:Reythor 雷
125
3.7.4 相对路径分类
根据相对路径是否以斜杠开头,可以划分为两类:斜杠路径,与非杠路径。
斜杠路径:以斜杠开头的相对路径。
非杠路径:不以斜杠开头的相对路径。
3.7.5 斜杠路径分类
对于斜杠路径,根据其出现的位置的不同,可以划分为:前台路径与后台路径。
前台路径:出现在 HTML、JS、CSS,及 JSP 文件的静态部分的斜杠路径。例如,<img src=””/>
<a href=””/> backgroud:img(“”) window.location.href=””。
后台路径:出现在 Java 代码、JSP 文件的动态部分(Java 代码块、JSP 动作等)、XML、
properties 等配置文件中的斜杠路径。
3.7.6 路径解析器
相对路径,最终都会经过路径解析器,将其转换为绝对路径,以定义或定位一个资源。
不同的相对路径,其路径解析器也是不同的。
前台路径:路径解析器为浏览器。
后台路径:路径解析器为服务器。
非杠路径:若非杠路径出现在前台路径位置,其路径解析器为浏览器;若非杠路径出现
在后台路径位置,其路径解析器为服务器。
3.7.7 解析规则
不同的路径解析器,对同一个相对路径的解析结果是不同的。所谓解析结果,指的是将
相对路径所转换为的绝对路径。由于 绝对路径 = 参照路径 + 相对路径 ,所以,不同的
解析器,会为相对路径匹配不同的参照路径。换句话说就是,我们学习的重点是,浏览器、
服务器对于不同的相对路径所匹配的参照路径到底是谁。
(1) 一般规则
前台路径:其参照路径为当前 web 服务器的根。
后台路径:其参照路径为当前 web 应用的根。
非杠路径:其参照路径为当前请求路径的资源路径。
例如,
请求路径: http://localhost:8080/xxx/test/index
当前 web 服务器的根: http://localhost:8080
当前 web 应用的根: http://localhost:8080/xxx
资源路径: http://localhost:8080/xxx/test 快速开发框架 Spring Boot
(2) 规则特例
在代码中使用 HttpServletResponse 的 sendRedirect()方法使用斜杠路径进行重定向时,
其参照路径按照之前规则,应该是当前 web 应用的根,但实际情况是,当前 web 服务
器的根。
以上规则对于一次跳转是没有问题的,若跳转次数超过一次,则有可能会存在问题。