二八佳人体似酥,腰间仗剑斩愚夫。虽然不见人头落,暗里教君骨髓枯。
上一章简单介绍了SpringBoot的初入门(一),如果没有看过,请观看上一章
一. 自定义配置 banner 启动图标
老蝴蝶在上一章无论是启动 HelloWorld 项目,还是 MavenHelloWorld,在控制台打印输出时,都会有这么一个启动图标。
这个就是启动的图标,可以发现,上面显示的是 Spring 。
一般公司开发中,都会自定义这个启动图案,放置公司的logo,或者公司名。
一般个人开发时,会放置自己的相关logo。 我们可以通过在线的网址,进行配置 banner 启动图标。
一.一 项目中resources目录下添加 banner.txt 文件
我们使用 上一章节的 MavenHelloWorld 进行演示。
在MavenHelloWorld 的resources目录下,添加一个 banner.txt 的普通文件。
注意,名称一定要叫 banner.txt
一.二 搜索在线制定SpringBoot banner 的网址
推荐使用 https://www.bootschool.net/ascii 网址进行在线制作。
可以选择自定义文字(中文支持效果不好),也可以选择艺术字和二维码。
老蝴蝶这儿用在线工具栏进行演示。
输入 "Two Butterfly" 两个蝴蝶飞 。
点击拷贝结果,进行复制。
一.三 将复制结果放置到 resources/banner.txt 文件里面
一.四 启动 HelloApplication 类,进行验证
会发现,启动时 banner 发生了改变。
一.五 添加版本号
官方默认的启动时,会添加 SpringBoot 的版本号,方便观察。 目前启动时,没有版本号。
可以在 banner.txt 文件中,添加
${spring-boot.version}
配置即可。
再次启动时,查看控制台,发现展示了版本号。
老蝴蝶后面的项目,均带有 banner.txt 的配置文件信息。
一.六 启动图标所在的配置类
启动 banner 的配置,是在 org.springframework.boot.SpringApplicationBannerPrinter 类下面。 在 spring-boot r jar包下面。
默认的名称是 banner.txt 。
二. 服务器自定义配置
我们在启动项目时,使用的是Tomcat 服务器, 端口号是默认的 8080, path路径是 ""
我们可以根据项目的需要,进行改变。
二.一 改变Tomcat的服务器的端口号和path路径
二.一.一 在 application.properties 配置文件里面进行配置
server.port=8027
server.servlet.context-path=/Lin
server.port 修改端口号
server.servlet.context-path 修改项目名称。
二.一.二 重启项目,查看控制台输出
可以发现,Tomcat的端口号和地址均发生了改变。
二.一.三 网址url请求验证
输入以前的网址: http://localhost:8080/info , 请求不成功。
需要改成现在的新网址进行访问, http://localhost:8027/Lin/info
端口号和项目路径修改成功。
二.二 修改成 Jetty 服务器
二.二.一 移除 tomcat 的依赖
tomcat 的依赖,是在 spring-boot-starter-web 依赖里面,需要从里面排除掉。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--必须移除tomcat依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
二.二.二 添加 jetty依赖
<!--放置 jetty 依赖,使用jetty服务器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
pom.xml 文件完整的依赖部分
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--必须移除tomcat依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--放置 jetty 依赖,使用jetty服务器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
</dependencies>
二.二.三 重启项目,进行验证
使用了 Jetty 的服务器,外部url访问时,也正常。(注意一下,注意一下,替换了服务器,与配置文件无关)
老蝴蝶后面的项目,还是使用 常用的Tomcat 服务器,上面只是演示一下这种用法。
三. 配置文件的优先级
我们通过 SpringBoot的官方网址创建的SpringBoot项目工程,会在 resources/ 目录下,生成一个 application.properties 的配置文件。
其实,官方推荐和实际开发中,常常使用 application.yml 文件进行配置( 关于yml 文件的用法,下一章节老蝴蝶再重点讲解).
SpringBoot 的配置文件, application.properties / application.yml 除了放置在 resources目录下,也可以放置在其他的目录下。
三.一 SpringBoot的配置文件放置位置和优化级
- file: ./config/
- file: ./
- classpath: ./config/
- classpath: ./
file: ./config/ 指的是放置在项目根目录下的 config 文件夹里面 (如 application1.properties)
file: ./ 指的是放置在项目根 目录下 里面 (如 application2.properties)
classpath: ./config/ 指的是放置在项目类路径即 resources 目录下的 config 文件夹里面。 (如 application3.properties)
classpath: ./ 指的是放置在项目类路径即 resources 目录下。(如 application4.properties)
(老蝴蝶这儿只是演示一下配置文件的位置层次,这些配置文件并不能真正起作用。)
这四个优化级也是从高到低排列的, file: ./config/ 的优化级最高, classpath: ./ 的优化级最低。
Springboot项目启动时会按照如下顺序由高到低读取配置,高优先级的属性会覆盖低优先级的属性,属性文件之间存在互补配置的特性。
也就是说,当 file: ./config/ 下的配置文件里面的属性与 classpath: ./的配置文件里面的属性相同时,会直接用 file: ./config/ 下的配置。
可以这么想像一下: springBoot 加载时,会将这四个层级下的配置文件都一起加载了,合并成一个配置文件,如果有相同的配置文件部分,保留优先级最高的。
SpringBoot 给我们放置在 resources 目录下的 application.properties ,优化级是最低的,我们可以根据具体的项目业务逻辑,添加优化级最高的配置信息。
三.二 演示配置文件的优化级和互补特性
只保留 application.properties 配置文件,将 resoruces/config/application3.properties 改成 application.properties 文件。
三.二.一 config下的application.properties 配置文件添加配置
server.port=8081
这儿只添加 port 端口号配置,意味着 servlet.context-path 采用的是默认的配置。
三.二.二 application.properties 添加配置
server.port=8027
server.servlet.context-path=/Lin
也添加了 port 端口号配置,是 8027. 添加了 servlet.context-path 路径配置,为 /Lin
三.二.三 重启项目,进行验证
端口号用的是 config/application.properties 下面的 8081.
context path 用的是 application.properties 下面的 /Lin
三.二.四 网络 url 请求验证
8027 端口号走不通。
8081端口通,但是路径走不通。
8081/Lin 端口号,项目路径均可以走通。
本章节的代码放置在 github 上:
https://github.com/yuejianli/springboot/tree/main/MavenHelloWorld
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!