Skip to content

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

进行动态配置切换

例如:开发、测试、生产等。数据库地址、服务器端口等

  1. 配置方式
    • 多profile文件方式
    • yml多文档方式
  2. 激活方式
    • 配置文件
    • 虚拟机参数
    • 命令行参数
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: pro
2. 激活方式
2.1虚拟机参数

-Dspring.profiles.active=dev

2.2 命令行参数

--Dspring.profiles.active=dev

3命令行运行

java -jar xxx.jar [ --Dspring.profiles.active=dev]

内部配置加载顺序

  1. file:./config/ :当前项目下的/config目录下
  2. file:./ :当前项目的根目录
  3. classpath:/config/ :classpath的/config目录
  4. classpath:/ :classpath 的根目录

高优先级配置属性会生效

外部配置加载顺序