二、SpringBoot配置

puz2le / 2023-08-09 / 原文

SpringBoot配置文件

springBoot配置一般有application.propertiesapplication.ymlapplication.yaml
优先级:properties>yml>yaml

YAML:基本语法

  • 大小写敏感
  • 数据值前必须有空格作为分隔符
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格(各个系统Tab键生成的缩进对应的空格数目可能不相同,导致层次混乱)
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • #表示注释,从这个字符一直到行尾,都会被解析器忽略
server:
    port: 8080
    adress: 127.0.0.1

name: abc

YAML:数据格式

  • 对象(map):键值对的集合
person:
    name: zhangsan

# 行内写法
persopn: {name: zahngsan}
  • 对象:一组按次序排序的值
address:
    - beijing
    - shanghai

# 行内写法
address: [beijing, shanghai]
  • 纯量:单个的,不可再分的值
msg1: 'hello \n world' # 单引号忽略转义字符
msg2: "hello \n world" # 双引号识别转义字符

YAML:参数引用

name: list

person:
    name: ${name}

读取配置内容

  1. @Value
  2. Environment
  3. @ConfigurationProperties

@Value用法

@RestController
public class HelloController {
    @Value("${person.name}")
    private String name;
    @Value("${version}")
    private Double version;
    @Value("${address[0]}")
    private String address1;
    @Value("${address[1]}")
    private String address2;
    @Value("${msg1}")
    private String msg1;
    @Value("${msg2}")
    private String msg2;
    @RequestMapping("/")
    public String hello(){
        System.out.println(name);
        System.out.println(version);
        System.out.println(address1);
        System.out.println(address2);
        System.out.println(msg1);
        System.out.println(msg2);
        return "Hello springBoot";
    }
}

Environment用法

@RestController
public class HelloController {
    
    @Autowired
    private Environment env;
    
    @RequestMapping("/")
    public String hello(){

        System.out.println(env.getProperty("person.name"));
        System.out.println(env.getProperty("version"));
        System.out.println(env.getProperty("address[0]"));
        System.out.println(env.getProperty("address[1]"));
        System.out.println(env.getProperty("msg1"));
        System.out.println(env.getProperty("msg2"));

        return "Hello springBoot";
    }
}

@ConfigurationProperties