01-Spring Boot配置文件详解

1、Properties配置详解

​ 通常情况下,我们可以使用properties文件进行相关的配置。

​ (1)在resources目录下创建application.properties

person.name=zhangsan
person.age=12
person.gender=男
person.desc=my name is ${person.name},my age is ${person.age}

  (2)创建对应的实体类对象

@Component
public class Person {
    @Value("${person.name}")
    private String name;
    @Value("${person.age}")
    private int age;
    private String sex;
    @Value("${person.desc}")
    private String desc;
}

  可以在properties文件中使用随机数

​ (1)在application.properties文件中添加如下属性

my.secret=${random.value}
my.number=${random.int}
my.bignumber=${random.long}
my.uuid=${random.uuid}
my.number.less.than.ten=${random.int(10)}
my.number.in.range=${random.int[1024,65536]}

  (2)创建对应的实体类

@Component
public class My {
    @Value("${my.secret}")
    private String screct;
    @Value("${my.number}")
    private int number;
    @Value("${my.bignumber}")
    private long bignumber;
    @Value("${my.uuid}")
    private UUID uuid;
    @Value("${my.number.less.than.ten}")
    private int lessThanTen;
    @Value("${my.number.in.range}")
    private int numberInRangel;
}

  

多环境配置

​ 在实际开发中,我们的一套代码可能会被同时部署到开发、测试、生产等多个服务器中,每个环境中诸如数据库密码等这些个性化配置是避免不了的,虽然我们可以通过自动化运维部署的方式使用外部参数在服务启动时临时替换属性值,但这也意味着运维成本增高。

​ 1、在resources目录下创建多个配置文件

​ application-dev.properties

​ application-test.properties

​ application-prod.properties

​ application.properties

spring.profiles.active=dev/test/prod

  

2、YAML

​ YAML是“YAML Ain't Markup Language YAML不是一种标记语言”的外语缩写,但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。它是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。

基本原则:

  • 1、大小写敏感
  • 2、使用缩进表示层级关系
  • 3、禁止使用tab缩进,只能使用空格键
  • 4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
  • 5、使用#表示注释

(1)使用yaml完成多环境配置:application.yaml

spring:
  profiles:
    active: test
---
spring:
  profiles: dev
server:
  port: 8080
---
spring:
  profiles: test
server:
  port: 8081

  (2)使用yaml进行相关参数的设置

person:
  name: zhangsan
  age: 12
  sex: 男
  desc: my name is ${person.name},my age is ${person.age}

  对应的实体类对象

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
//    @Value("${person.name}")
    private String name;
//    @Value("${person.age}")
    private int age;
    private String sex;
//    @Value("${person.desc}")
    private String desc;

}

  

3、@ConfigurationProperties 与 @Value 对比

功能@ConfigurationProperties@Value
松散绑定
元数据支持
spEL表达式
原文地址:https://www.cnblogs.com/dagreentree/p/13565477.html