Springboot配置文件
-
application.properties 语法 key=value
-
application.yaml 语法 key: 空格 value
配置文件的作用是修改自动配置的值
yaml是一种标记语言(与xml对比)
server:
prot: 8080
xml:
<server>
<prot>8080<prot/>
<server/>
yaml与properties对比
yaml:
#yaml对于空格的使用比较严格
#可以注入到配置类中
#普通k-v键值对
name: xiaoming
#对象
people:
name: xiaoming
age: 11
#行内写法
person: {name: xiaoming, age: 11}
#数组
pets:
- dog
- cat
- pig
pets1: [dag,cat,pig]
properties:
#只能保存k-v键值对
name=xiaoming
student.name = xiaoming
student.age = 11
给一个类的属性赋值:
-
new这个类的对象,通过对象赋值
-
spring 自动注入@Value
@Component//将Dog类设置为组件 public class Dog { //@Value("CAL")//设置属性值 private String name; //@Value("23") private Integer age;
-
yaml配置文件
yaml文件:
person:
name: cal
age: 23
happy: false
birthday: 1999/06/06
maps: {k1: v1,k2: v2}
lists:
- lsp
- sb
- sd
dog:
name: dongdong
age: 2
实体类:
@Component
@ConfigurationProperties(prefix = "person")//将实体类与配置文件绑定
在pom.xml中添加依赖,即可解决
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</ optional>
</dependency>
4.properties文件
可能会乱码,需要先修改设置
实体类:
@Component
//@ConfigurationProperties(prefix = "person")//将实体类与配置文件绑定,默认从全局配置文件中获取值;
@PropertySource(value = "classpath:zkh.properties")//从指定配置文件中获取值
public class Person {
//springEL表达式取值
@Value("${name}")
private String name;
}
在resources目录下新建zkh.properties文件
name=zkh
配置文件占位符:
person:
name: ${random.uuid} #随机uuid
age: ${random.int}
happy: false
birthday: 1999/06/06
maps: {k1: v1,k2: v2}
lists:
- lsp
- sb
- sd
dog:
name: ${person.hello:other}dog #有person.hello则为person.hello的值,没有则为other
age: 23
yaml支持松散绑定:
松散绑定: 比如yml中写的fist-name,这个和实体类属性fistName是一样的, - 后面跟着的字母默认是大写的。这就是松散绑定。
JSR303校验:给实体类某一属性设置对应的格式
@NotNull(message="名字不能为空")
private String userName;
@Max(value=120,message="年龄最大不能查过120")
private int age;
@Email(message="邮箱格式错误")
private String email;
空检查
@Null 验证对象是否为null
@NotNull 验证对象是否不为null, 无法查检长度为0的字符串
@NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格.
@NotEmpty 检查约束元素是否为NULL或者是EMPTY. Booelan检查
@AssertTrue 验证 Boolean 对象是否为 true
@AssertFalse 验证 Boolean 对象是否为 false
长度检查
@Size(min=, max=) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Length(min=, max=) string is between min and max included.
日期检查
@Past 验证 Date 和 Calendar 对象是否在当前时间之前
@Future 验证 Date 和 Calendar 对象是否在当前时间之后
@Pattern 验证 String 对象是否符合正则表达式的规则
@Component //注册bean@ConfigurationProperties(prefix = "person")
@Validated //数据校验
public class Person {
@Email(message="邮箱格式错误") //name必须是邮箱格式
private String name;
}
配置文件的位置及其优先级:
切换配置文件:
(1)properties
application-dev.properties 代表开发环境
application-test.properties 代表测试环境
只需在application.properties文件中 写入spring.profiles.active=dev 即可激活对应的环境
(2)yaml
server:
port: 8080
spring:
profiles:
active: dev
---
server:
port: 8081
spring:
profiles: dev
---
server:
port: 8082
spring:
profiles: test
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix