SpringBoot的配置文件

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用 application.properties或者application.yml(application.yaml)进行配置。
SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件。

这三种文件存在优先级关系:.properties > .yaml > .yml  (即 对同一种属性进行赋值时,springboot会优先加载.properties中的,等同于.properties文件中的值会覆盖前两者中的值)

我们可以在配置文件中自己定义服务器端口号和web应用的虚拟工程名,如:

在yml配置文件中的写法为:

springboot工程启动后,在控制台上我们可以看到如下日志,说明配置生效了:

application.yml配置文件

1. yml配置文件简介

YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数 据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导 入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简 洁。
YML文件的扩展名可以使用.yml或者.yaml。

2.yml配置文件的语法

配置普通数据

语法:

   key:  value

示例代码:

#普通数据的配置
name: zhangsan

注意:冒号之后有一个空格

配置对象数据

语法:
  key:
   key1: value1
   key2: value2
  或者:
  key: {key1:  value1,key2:  value2}

示例代码:

所有冒号后都要有一个空格
#对象数据的配置,一般使用缩进方式表示层级关系 person: name: zhangsan age: 18 addr: beijing #行内对象配置,上面对象的另一种写法,一般很少用 #person: {name: zhangsan,age: 18,addr: beijing}

注意:key1前面的空格个数不限定,在yml语法中,相同缩进代表同一个级别

配置Map数据 

同上面的对象写法

配置数组(List、Set)数据

语法:
  key:
   - value1
   - value2

或者:
  key: [value1,value2]

示例代码:

city:  
    - beijing  
    - tianjin  
    - shanghai  
    - chongqing  
#或者
city: [beijing,tianjin,shanghai,chongqing]
 
#集合中的元素是对象形式 
student:  
    - name: zhangsan    
      age: 18    
      score: 100  
    - name: lisi    
      age: 28    
      score: 88  
    - name: wangwu    
      age: 38    
      score: 90

注意:value1与之间的 - 之间存在一个空格

配置文件与配置类的属性映射方式

1.使用注解@Value映

我们可以通过@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上

 例如:
application.properties配置如下:

person:
  name: zhangsan
  age: 18
  addr: beijing
注:第一个冒号前不用空格,之后的无所谓

或者,application.yml配置如下:

person:
  name: zhangsan
  age: 18
  addr: beijing
注:每个冒号后都要加空格

实体Bean代码如下:

@RestController
public class Quick2Controller {

    @Value("${person.name}")
    //从配置文件中获取对应的key的value值,自动赋给下面变量
    private String name;

    @Value("${person.age}")
    private String age;

    @Value("${person.addr}")
    private String addr;

    @RequestMapping("/quick2")
    public String quick2() {
        //获取配置文件的信息
        return "name: " + name + "  age: "+age +"  addr: " + addr;
    }
}

这里的@Value()也可以直接添值,如@Value("beijing")

浏览器访问结果为:

2.使用注解@ConfigurationProperties映射

通过注解@ConfigurationProperties(prefix="配置文件中的key的前缀")可以将配置文件中的配置自动与实体进行映射

application.properties配置如下:

person.name=zhangsan
person.age=18
person.addr=beijing
注:只能写成这种形式,而不能key:value

或者,application.yml配置如下:

person:
  name: zhangsan
  age: 18
  addr: beijing

实体Bean代码如下:

@RestController
@ConfigurationProperties(prefix = "person")
public class Quick3Controller {

    private String name;
    private Integer age;
    private String addr;

  //需要设定setter和getter方法
public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } @RequestMapping("/quick3") public String quick2() { //获取配置文件的信息 return "name: " + name + " age: " + age + " addr: " + addr; } }

浏览器结果:

 注意:使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,但需要字段必须提供set方 法才可以,而使用@Value注解修饰的字段不需要提供set方法

原文地址:https://www.cnblogs.com/churujianghudezai/p/12688985.html