赞
踩
SpringBoot提供了3种配置文件的格式
server.port=81
server:
port: 82
server:
port: 83
yml格式和yaml格式除了文件名后缀不一样,格式完全一样
临时属性设置
两个-号
,当属性存在多级名称时,中间使用点
分隔,和properties文件中的属性格式完全相同java –jar springboot.jar --server.port=80 --logging.level.root=debug
Program arguments(程序参数)
或VM options (虚拟机参数)
就是添加临时属性的常用
)# 以应用参数的方式
java -jar my.jar --server.port=7788
# 或以 JDK 参数的方式
java -Dserver.port=7788 -jar my.jar
SpringBoot3种配置文件不同版本优先级
2.4.0及以后
版本:application.yaml ➡️ application.yml ➡️ application.properties2.4.0以前
版本:application.properties ➡️ application.yml ➡️ application.yaml覆盖
低优先级,不同配置文件中不同配置全部保留
配置文件不同位置优先级
使用场景
--spring.config.name=myApplication
--spring.config.location=classpath:/myApplication.yml
空格
(不允许使用Tab键)冒号+空格
作为分隔)常见的数据书写格式:
boolean: TRUE #TRUE,true,True,FALSE,false,False均可
float: 3.14 #6.8523015e+5 #支持科学计数法
int: 123 #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制
null: ~ #使用~表示null
string: HelloWorld #字符串可以直接书写
string2: "Hello World" #可以使用双引号包裹特殊字符
date: 2018-02-17 #日期必须使用yyyy-MM-dd格式
datetime: 2018-02-17T15:02:31+08:00 #时间和日期之间使用T连接,最后使用+代表时区
yml格式表示简单数组
:
#数组格式一
subject:
- Java
- 前端
- 大数据
enterprise:
name: itcast
age: 16
subject:
- Java
- 前端
- 大数据
#数组格式二
likes: [王者荣耀,刺激战场]
yml格式表示对象数组
:
#对象数组格式一
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格式表示Map键值对
:
#方式一
person2:
map:
k1: v1
k2: v2
#方式二
person2:
map: {k1: v1,k2: v2}
读取单一数据
使用@Value
可以读取单个数据,属性名引用方式:${一级属性名.二级属性名……}
@RestController
public class ReadConfigFile {
@Value("${server.port}")
private String myPort;
@RequestMapping("/getValue")
public String getValue(){
System.out.println(myPort);//8080
return "success";
}
}
读取对象数据
@ConfigurationProperties
注解绑定配置信息到封装类中yml:
person:
name: zhang3
age: 30
pets:
- type: dog
age: 1
- type: cat
age: 2
mymap:
mykey1: value1
mykey2: value2
属性注入的实体:
@Data
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private Integer age;
private List<Pets> pets;//宠物
private Map<String,String> mymap;
}
@Data
class Pets {
private String type;
private Integer age;
}
添加此依赖,yml属性可以提示@ConfigurationProperties对应的实体的字段属性
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
代码使用
@RestController
public class ReadConfigFile {
@Autowired
private Person person;
@RequestMapping("/getValue")
public String getValue(){
System.out.println(person);
return "success";
}
}
输出结果:
Person(name=zhang3, age=30, pets=[Pets(type=dog, age=1), Pets(type=cat, age=2)], mymap={mykey1=value1, mykey2=value2})
springboot 2.4.0以前版本
spring:
profiles:
active: dev #激活dev环境配置
---
spring:
profiles: pro
server:
port: 80
---
spring:
profiles: dev
server:
port: 81
---
spring:
profiles: test
server:
port: 82
springboot 2.4.0及以后的版本
spring:
profiles:
active: dev #激活dev环境配置
---
spring:
config:
activate:
on-profile: pro
server:
port: 80
---
spring:
config:
activate:
on-profile: dev
server:
port: 81
---
spring:
config:
activate:
on-profile: test
server:
port: 82
application.yml 主配置文件
spring:
profiles:
active: pro #激活pro环境
#其他公共属性
...
application-pro.yml 生产环境配置文件
server:
port: 81
application-dev.yml 开发环境配置文件
server:
port: 82
后者优先级高
SpringBoot2.4.0以前版本
spring:
profiles:
active: dev
include: devDB,devRedis,devMVC
SpringBoot2.4.0及以后版本
spring:
profiles:
active: dev
group:
"dev": devDB,devRedis,devMVC
"pro": proDB,proRedis,proMVC
"test": testDB,testRedis,testMVC
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。