SpringBoot配置
1. SpringBoot配置文件
SpringBoot配置文件一共有三种
- spplication.properties
- application.yml(用的最多)
- application.yaml
用的最多的是yml文件,yml版本更加结构化且易于阅读维护。这就是Spring Boot推荐使用yml作为配置文件格式的主要原因。
第一种方式:spplication.properties
# 启动端口号
server.port=8080
第二种方式:application.yml
server:port: 8081
第三种方式:application.yaml
但是创建yaml文件后出现了问题,原因是在读取的时候,无法被看成是SpringBoot框架的配置文件,所以需要进行配置,步骤如下:
一系列操作下来就ok了~
2. 配置文件加载顺序
spplication.properties > application.yml > application.yaml
3. yaml语法
YAML(YAML Ain't Markup Language)是一种人性化的数据序列化标准:
-
以数据为中心,比JSON/XML更适合配置文件
-
使用缩进表示层级关系
-
大小写敏感
-
支持注释
server:port: 8080servlet:context-path: /api
缩进规则
-
使用空格缩进(建议2个空格,不要用Tab)
-
同级元素左对齐
-
缩进数量表示层级
4.数据类型表示
1. 字面量(标量)
string: "Hello" # 字符串
number: 123 # 数字
float: 3.14 # 浮点数
boolean: true # 布尔值
null: ~ # null
date: 2023-08-15 # 日期
2. 数组/列表
使用-
表示数组项:
fruits:- Apple- Banana- Orange
行内写法:
fruits: [Apple, Banana, Orange]
3. 对象/Map
person:name: Johnage: 30address:city: New Yorkzip: 10001
5. yml数据读取
yml数据读取有两种常见的方法:
-
@Value注解方式注入
-
@ConfigurationProperties方式注入
5.1 @Value注解方式注入
@Component
public class MyComponent {@Value("${server.port}")private int serverPort;@Value("${spring.application.name}")private String appName;
}
特点分析
优点:
- 简单直接,适合单个属性的注入
-
支持SpEL表达式
-
可以用于方法参数注入
缺点
- 大量使用时代码会显得杂乱
- 类型转换需要额外处理
- 不支持复杂对象结构的绑定
适用场景:
- 注入少量简单配置值
- 需要快速原型开发时
-
需要SpEL表达式支持时
5.2 @ConfigurationProperties方式注入
- yml配置
# application.yml
myapp:config:name: "订单服务"version: "1.0.0"servers:- "192.168.1.1"- "192.168.1.2"timeout: 5000enabled: true
- java
@Configuration
@ConfigurationProperties(prefix = "myapp.config")
public class AppConfig {private String name;private String version;private List<String> servers;private int timeout;private boolean enabled;// 必须提供setter方法public void setName(String name) { this.name = name; }// 其他setter...
}
优点:
- 类型安全,减少运行时错误
- 支持复杂嵌套结构的绑定
- 自动完成类型转换
- 可以与IDE的元数据支持配合,提供代码提示
- 支持验证注解如@Validated
缺点:
- 需要创建配置类
- 需要为每个属性提供setter方法
6. 多环境配置
多环境配置是指应用程序在不同环境(开发、测试、生产等)中使用不同配置的能力。Spring Boot提供了灵活的多环境支持机制。
在yml配置文件进行配置如下:
# 公共配置
spring:application:name: my-app---
# 开发环境
spring:profiles: dev
server:port: 8080---
# 生产环境
spring:profiles: prod
server:port: 80
7. SpringBoot项目jar包启动
7.1 导入打包插件
<!-- jar包打包运行的插件 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>