Spring Boot配置文件详解

一、基础语法

1. SpringBoot提供了2种配置文件类型:properteis 和 yml/yaml

2. 默认配置文件名称:application

3. 在同一级目录入如果三类文件共存,优先级为:properties > yml > yaml

二、注意事项

1. 大小写敏感

2. 数据值前边必须有空格,作为分隔符

3. 使用缩进表示层级关系

4. 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。

5. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

6. "#"表示注释,从这个字符一直到行尾,都会被解析器忽略。

三、数据格式

java 复制代码
#############################数据格式####################################
#	字面量:普通的值  [ 数字,布尔值,字符串  ]
boolean: TRUE 				#TRUE,true,True,FALSE,false,False均可
float: 3.14 				#6.8523015e+5 #支持科学计数法
int: 123 					#0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制
string: HelloWorld 			#字符串可以直接书写

#	数组:一组按次序排列的值( List、set )
address:
  - 西安
  - 上海
  - 杭州
# 行内写法
commpany: [阿里巴巴,华为,腾讯,字节跳动]

#	对象、Map(键值对)
person1:
  name: 小美
  age: 19
  sex: 女

# 行内写法
person2: {name: 大美,age: 18,sex: 女}

#对象数组格式一
users1:
  - name: Tom
    age: 4
  - name: Jerry
    age: 5

#对象数组格式二
users2:
  -
    name: Tom
    age: 4
  -
    name: Jerry
    age: 5

#对象数组缩略格式
users3: [ { name:Tom,age:4 },{ name:Jerry,age:5 } ]


#yaml引用
name: 271

persons:
  name: 十个勤天
  pet: ${name}	# 引用上边定义的name值
  age: ${random.uuid} # 配置文件占位符,随机uuid

四、Spring Boot注解的作用

1、@ConfigurationProperties 注解

提供了一种方便的方式,可以将配置文件中的属性映射到 Java对象的字段上。这样做的一个常见的方式是使用属性的前缀来进行匹配。

application.yml配置文件

java 复制代码
# application.yml 
myapp.database:
    url: jdbc:mysql://localhost:3306/mydatabase
    username: root
    password: password 

实体类:

java 复制代码
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component 
@ConfigurationProperties(prefix = "myapp.database")
public class DatabaseProperties {
    private String url;
    private String username;
    private String password;

    // Getters and setters
    
    // toString()

    // 可以在这里添加其他的业务逻辑 
} 

2、@Value 注解

使用 @Value 注解可以直接将配置文件中的属性值注入到 Spring Bean 中的字段或方法参数上。

application.yml配置文件

java 复制代码
dog:
  dname: 花花
  dage: 4

实体类:

java 复制代码
@Component
public class Dog {
    @Value("${dog.dname}")
    private String dname;
    @Value("${dog.dage}")
    private int dage;

// setter/getter/toString()方法

3.@Validated 注解

通常用于对输入数据进行校验。当在方法参数、方法返回值或类级别上使用 @Validated 注解时,Spring 会根据预先定义的校验规则来检查相关的数据是否有效。

java 复制代码
//对个别属性进行输入校验

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
    @NotNull(message = "用户名称不能为空")
    private String name;
    @Email(message = "邮箱格式不正确")
    private String email;
    private String sex;
    @NotNull(message = "用户年龄不能为空")
    @Max(value = 150,message = "给年轻人留点机会吧")
    private int age;
    private Date birthday;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

4、 @PropertySource 注解

使用 @PropertySource 注解可以在配置类中引入外部的属性文件。

java 复制代码
//引入外部文件application.properties

@Component
@PropertySource("classpath:application.properties")
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
    @NotNull(message = "用户名称不能为空")
    private String name;
    @Email(message = "邮箱格式不正确")
    private String email;
    private String sex;
    @NotNull(message = "用户年龄不能为空")
    @Max(value = 150,message = "给年轻人留点机会吧")
    private int age;
    private Date birthday;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

五、 application.yml 基础配置

1.逐一插入、批量插入

java 复制代码
##########################逐个注入###################################
dog:
  dname: 花花
  dage: 4

##########################批量注入###################################
person:
  name: 王一博
  email: 123456789@qq.com
  sex: 男
  age: 27
  birthday: 1997/8/5
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - bodybuilding
    - music
  dog:
    dname: summer
    dage: 4

2.常见yml配置

java 复制代码
# 服务器端口
server:
  port: 8080

# 数据库连接配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver

# 日志级别
logging:
  level:
    root: INFO
    com.example.mypackage: DEBUG

# 应用程序自定义属性
myapp:
  name: My Spring Boot App
  version: 1.0

六、多个yml文件怎么使用?

修改端口号为例

1.application.yml(调用)

java 复制代码
spring:
  profiles:
    active: dev

2.application-dev.yml

java 复制代码
server:
  port: 8082

3.application-test.yml

java 复制代码
server:
  port: 8081

4.验证:

原端口号(8081) ---------> 先端口号8082

相关推荐
儿时可乖了1 分钟前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
ruleslol2 分钟前
java基础概念37:正则表达式2-爬虫
java
xmh-sxh-131419 分钟前
jdk各个版本介绍
java
XINGTECODE32 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
天天扭码38 分钟前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
程序猿进阶38 分钟前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
FIN技术铺43 分钟前
Spring Boot框架Starter组件整理
java·spring boot·后端
小曲程序1 小时前
vue3 封装request请求
java·前端·typescript·vue
凡人的AI工具箱1 小时前
15分钟学 Go 第 60 天 :综合项目展示 - 构建微服务电商平台(完整示例25000字)
开发语言·后端·微服务·架构·golang
陈王卜1 小时前
django+boostrap实现发布博客权限控制
java·前端·django