3.1 Spring Boot 系统配置文件

第3章 Spring Boot 的系统配置

3.1 Spring Boot 系统配置文件
3.2 Spring Boot 自定义配置项
3.3 Spring Boot 其他配置
3.4 Spring Boot 日志配置
3.5 实战:Spring Boot 实现系统多环境配置

3.1 Spring Boot 系统配置文件

3.1.1 application.properties

1、基本语法

# 服务器端口配置
server.port=8081

# thymeleaf 模板
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html

2、配置文件加载顺序

【理论介绍】

配置文件加载顺序:
1. 项目根目录下的config目录。【优先级最高】
2. 项目根目录。
3. classpath下的config目录。
4. classpath目录(新建项目时application.properties默认所在位置)。【优先级最低】

备注:
- 加载顺序:4 -> 3 -> 2 -> 1。
- 优先级:逐渐减低(1>2>3>4)。

【举例说明】

项目结构示例:

配置文件加载顺序.png

1. 项目根目录下的config目录(file:./config/):helloworld/config/
2. 项目根目录(file:./):helloworld/
3. classpath下的config目录(classpath:/config/):helloworld/src/main/resources/config/
4. classpath目录(classpath:/):helloworld/src/main/resources/

备注:
加载顺序:4 -> 3 -> 2 -> 1。
优先级:逐渐减低(1>2>3>4)。

启动命令

$ java -jar helloworld-0.0.1-SNAPSHOT.jar

指定配置文件的启动命令

$ java -jar helloworld-0.0.1-SNAPSHOT.jar --spring.config.location=classpath:/application.properties

扩展:

(1)指定配置文件名称(如指定配置文件为helloworldApplication.properties):

$ java -jar helloworld-0.0.1-SNAPSHOT.jar --spring.config.name=helloworldApplication

(2)指定两个配置文件,后一个覆盖前一个中相同的属性项(前后两个文件都有的属性项,覆盖前一个属性项,使用后一个属性项;前一个有而后一个没有的属性项,使用前一个的属性项):

$ java -jar helloworld-0.0.1-SNAPSHOT.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

3、修改默认配置文件名

项目的配置文件必须命名为application.properties吗?当然不是,我们可以通过修改项目启动类,调用SpringApplicationBuilder类的properties()方法来实现自定义配置文件名称。示例代码如下:

@SpringBootApplication
public class HelloworldApplication {
   
    // 修改默认配置文件名
   public static void main(String[] args) {
      new SpringApplicationBuilder(HelloworldApplication.class)
              .properties("spring.config.location=classpath:/application.properties")
              .run(args);
   }
   
}

3.1.2 application.yml

application.yml是以 yml 为后缀,使用 YAML(YAML Ain‘t a Markup Language)的配置文件。

1、基本语法

YML基本语法为key:(空格)value的键值对形式,冒号后面必须加上空格。
通过空格的缩进来控制属性的层级关系,只要是左对齐的一列数据,都是同一个层级的。

application.yml

# 日志配置
logging:
  level:
    # 指定整个项目的日志级别
    root: INFO
    # 对某个包指定单独的日志级别
    #com.example.helloworld.controller: debug
  file:
    max-history: 30
    max-size: 10MB
    # 指定输出日志文件(默认日志文件名为spring.log)存放位置。
    # /var/log:当前磁盘根目录下的/var/log目录,如:E:/var/log
    # ./var/log:当前项目根目录下的/var/log目录,如:helloworld/var/log
    path: /var/log
YAML基本语法:
(1)冒号和属性值中间必须有空格,如name: zhangsan正确,使用name:zhangsan就会报错。
(2)属性和值都区分大小写(大小写敏感)。
(3)使用缩进表示层级关系,缩进的空格不重要,只用相同层级的元素左对齐即可。
(4)缩进不予许使用tab,只允许空格。
(5)'#'表示注释

2、数据类型

(1)普通的值(数字、字符串、布尔值)

普通的数据通过k: v的键值对形式直接编写,普通的值类型或字符串默认不用加上单引号或者双引号。

# 数字
a: 1
# 字符串
b: helloworld
# 布尔值
c: true

也可以使用双引号(“”)来转义字符串中的特殊字符,如下:

name: "zhangsan \n lisi"
上面的示例会输出:
zhangsan
lisi

备注:使用单引号(‘’)不会转义特殊字符,所有字符都按照普通字符处理,作为字符串数据。

(2)对象、Map(属性和值)

对象同样是以k: v的键值对方式展现,只是对象的各个属性和值的关系通过换行和缩进方式来编写。

person:
  lastName: zhangsan
  age: 20

如果使用行内写法,可以将对象的属性和值写成JSON格式。

person: {lastName: zhangsan,age: 20}

(3)数组(List、Set)
数组是以- value的形式表示数组中的元素的。

persons:
  - zhangsan
  - lisi
  - wangwu

还可以采用行内写法,数组使用中括号的形式。

persons: [zhangsan, lisi, wangwu]

3.1.3 Properties 与 YML 配置文件的区别

Spring Boot中的配置问阿金有Properties或者YML两种格式。一般情况下两者可以随意使用,可以根据自己的使用习惯选择适合的配置文件格式。
YML和Properties配置文件的区别如下:
(1)YMl文件以数据为中心,对于数据的支持和展现非常友好。
(2)YML文件支持多文档块的使用方式,使用起来非常灵活。
(3)Properties文件对格式的要求没那么严格,而YML文件以空格的缩进来控制层级关系,对格式的要求非常高,缩进格式不对时容易出错。
(4)Properties文件支持@PropertySource注解,而YML文件不支持。
(5)Properties配置的优先级高于YML文件。因为YML文件的加载顺序先于Properties文件,如果两个文件存在相同的配置,后面加载的Properties中的配置会覆盖前面YML中的配置。

3.1.4 实战:自定义系统的启动图案

Spring Boot 程序启动时,控制台会输出有一串字符组成的Spring符号的启动图案(Banner)以及版本信息。如下图(Spring Boot 程序默认的后台启动画面):
Spring Boot程序默认的后台启动画面
下面通过示例来演示如何自定义 Spring Boot 的启动图案。

(1)在resource目录下新建banner.txt。

banner.txt

${AnsiColor.BRIGHT_YELLOW}
##    ## ###### ##      ##      ########
##    ## ##     ##      ##      ##    ##
##    ## ##     ##      ##      ##    ##
######## ###### ##      ##      ##    ##
##    ## ##     ##      ##      ##    ##
##    ## ##     ##      ##      ##    ##
##    ## ###### ####### ####### ########

${AnsiColor.BRIGHT_RED}
Application Name: ${application.title}
Application Version: ${application.formatted-version}
Spring Boot Version: ${spring-boot.formatted-version}

(2)在application.properties中配置banner.txt的路径等信息。

application·properties

# 指定Banner配置文件的位置
spring.banner.location=/banner.txt
# 是否显示横幅图案:可选值有3个,一般不需要修改。(console:显示在控制台, log:显示在文件, off:不显示)
spring.main.banner-mode=log
# 设置应用名称、应用的版本、Spring Boot的版本
application.title=My App
application.version=1.0.0.0
application.formatted-version=v1.0.0.0.0
spring-boot.version=2.7.5
spring-boot.formatted-version=v2.7.5

(3)启动项目,查看修改之后的启动横幅图案是否生效。
自定义系统的启动图案

来源:《Spring Boot 从入门到实战》学习笔记

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值