☰
SpringBoot配置文件详解
2026/10/18 5:36:23 网站建设 项目流程

本文从配置文件的作用、快速入手,到properties与yml的语法、读取方式,最后通过一个验证码案例进行综合实践

目录

一、配置文件的作用

二、配置文件快速入手

三、配置文件的格式

四、properties配置文件说明

4.1properties基本语法

4.2读取配置文件

4.3properties缺点分析

五、yml配置文件

5.1yml基本语法

5.2yml进阶使用

5.3yml优缺点


一、配置文件的作用

配置文件主要是为了解决硬编码带来的问题,把可能会发生改变的信息,放在一个集中的地方,当我们启动某个程序时,应用程序从配置文件中读取数据,并加载运行。

SpringBoot支持并定义了配置文件的格式,也在另一个层面达到了规范其他框架集成到SpringleBoot的目的。很多项目或者框架的配置信息也放在配置文件中,比如:

项目的启动端口、数据库的连接信息(用户名、密码等设置)、日志等

项目的启动端口:SpringBoot内置了Tomcat服务器,默认端口号是8080,但是用户电脑上8080端口号有可能就被其他应用程序占用了,所以SpringBoot需要支持让用户自定义端口号。

数据库连接信息:为了更方便地简单地访问数据库,出现了一些持久层框架,其实就是对JDBC进行了更胜层次地封装,让用户通过简单几行代码可完成数据库的访问。但是不同的应用程序访问的数据库不同,这些持久层框架就需要支持用户可以自定义配置数据库的连接信息。

二、配置文件快速入手

修改application.properties文件:

重新运行程序,观察日志:

显示Tomcat启动端口号为9090。

三、配置文件的格式

SpringBoot配置文件有以下三种方式:

application.properties、application.yml、application.yaml

yml为yaml的简写,本文只讲yml文件的使用

当程序启动时,SpringBoot会自动从classpath路径找到并加载application.properties和application.yml文件。

注意:理论上.properties和.yml可以并存在于一个项目中,当.properties和.yml并存时,两个配置都会加载。如果配置文件内容有所冲突,则以.properties为主,也就是.properties优先级高。

四、properties配置文件说明

4.1properties基本语法

properties是以键值对的形式配置的,key和value之间以=连接

# 配置项目端口号
server.port=8080
# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

4.2读取配置文件

如果在项目中,想要主动地读取配置文件中的内容可以使用@Value注解来实现。@Value注解使用${ }的格式读取,如下代码所示:

import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class PropertiesController { @Value("${mykey.key1}") private String key1; @RequestMapping("/key") public String key() { return "读取到值:" + key1; } }

4.3properties缺点分析

properties配置是以key=value的形式配置的:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

properties配置文件中有很多冗余的信息,相比之下,yml配置文件就简单点

五、yml配置文件

5.1yml基本语法

yml是树形结构的配置文件,它的基础语法是key: value。key和value之间使用英文冒号+空格的方式组成,空格不可省略

# 正确的配置方式,冒号后面必须要有空格
key1: java
# 错误的配置方式
key2:java2

使用yml连接数据库

spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/dbname?characterEncoding=utf8&useSSL=false
username: root
password: root

5.2yml进阶使用

yml配置不同数据类型及null

# 字符串
string.value: Hello
# 布尔值,true 或 false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
# 浮点数
float.value: 3.14159
# Null,~代表 null
null.value: ~
# "" 空字符串
empty.value: ""

yml配置读取

string:
hello: bite

@RestController public class ReadYml { @Value("${string.hello}") private String hello; @RequestMapping("/ymlKey") public String key() { return "读取到值:" + hello; } }

配置对象

student:
id: 1
name: Java
age: 18

student: {id: 1, name: Java, age: 18}

此时需要使用@ConfigurationProperties来读取

import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @ConfigurationProperties(prefix = "student") @Component @Data public class Student { private int id; private String name; private int age; }
@RestController public class StudentController { @Autowired private Student student; @RequestMapping("/readStudent") public String readStudent() { return student.toString(); } }

5.3yml优缺点

优点:可读性高,写法简单,易于理解

支持更多的数据类型,可以简单表达对象、数组、List、Map等数据形态

支持更多的编程语言

缺点:不适合写复杂的配置文件。比如prorperties格式:

keycloak.realm=demo
keycloak.resource=fm-cache-cloud
keycloak.credentials.secret=d4589683-0ce7-4982-bcd3
keycloak.security[0].authRoles[0]=user
keycloak.security[0].collections[0].name=ssologinurl
keycloak.security[0].collections[0].patterns[0]=/login/*

转换成yml:

keycloak:
realm: demo
resource: fm-cache-cloud
credentials:
secret: d4589683-0ce7-4982-bcd3
security:
- authRoles:
- user
collections:
- name: ssologinurl
patterns:
- /login/*

转换过程比较花费精力,可读性会变差

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询