springboot 配置文件(yml)
yml
server:
port: 8082
name: abc
#对象
persen:
name: zhangsan
age: 20
#
persen2: {name: zhangsan,age: 20}
#数组
arr:
- t1
- t2
#
arr2: [t1,t2]
#纯量
msg: 'Hello \n world' #不识别转义符
msg2: "Hello \n world" #识别转义符
#参数引用
toName: ${name}读取配置文件内容
1. @Value
java
@RestController
public class HelloController {
@Value("${name}")
private String name;
@Value("${persen.name}")
private String name2;
@Value("${arr[0]}")
private String arr;
@Value("${msg}")
private String msg;
@RequestMapping("/hello")
public String hello2(){
System.out.println(name);
return "Hello Spring Boot";
}
}2. Environment (建议)
java
@Autowired
private Environment env;
@RequestMapping("/hello")
public String hello(){
System.out.println(env.getProperty("name"));
}3. @ConfigurationProperties
Person类
java
@Component
@ConfigurationProperties(prefix = "persen")
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}HelloController
java
@Autowired
private Person person;
@RequestMapping("/hello")
public String hello(){
System.out.println(person);
return "Hello Spring Boot";
}profile
进行动态配置切换
例如:开发、测试、生产等。数据库地址、服务器端口等
- 配置方式
- 多profile文件方式
- yml多文档方式
- 激活方式
- 配置文件
- 虚拟机参数
- 命令行参数
1. 配置方式
1.1 多profile文件方式(激活方式)
#一般默认 dev开发环境 pro生产环境 test测试环境 application.properties
spring.profiles.active=dev application-dev.properties
application-test.properties
application-pro.properties
1.2 yml多文档方式
yml
---
server:
port: 8081
spring:
profiles: dev
---
server:
port: 8082
spring:
profiles: test
---
server:
port: 8083
spring:
profiles: pro
---
spring:
profiles:
active: pro2. 激活方式
2.1虚拟机参数
-Dspring.profiles.active=dev
2.2 命令行参数
--Dspring.profiles.active=dev
3命令行运行
java -jar xxx.jar [ --Dspring.profiles.active=dev]
内部配置加载顺序
- file:./config/ :当前项目下的/config目录下
- file:./ :当前项目的根目录
- classpath:/config/ :classpath的/config目录
- classpath:/ :classpath 的根目录
高优先级配置属性会生效