当前位置: 移动技术网 > IT编程>开发语言>Java > [学习笔记] SpringBoot 的配置文件、yaml语法、配置注入、松散绑定

[学习笔记] SpringBoot 的配置文件、yaml语法、配置注入、松散绑定

2020年03月21日  | 移动技术网IT编程  | 我要评论

配置文件

springboot 有两种配置文件格式,二选一即可,官方推荐 yaml:

  • application.properties key=value的格式
  • application.yaml key: value的格式

配置文件位置

springboot会从这四个位置全部加载主配置文件;互补配置。优先级从高到低。

  • --spring.config.location=f:/application.yaml
  • /config/application.yaml
  • /application.yaml
  • /src/main/resources/config/application.yaml
  • /src/main/resources/application.yaml

yaml 格式特点

  • 冒号后面必须有一个空格,不能省略
  • 以缩进来控制层级关系,左边对齐的为同一层级
  • 属性和值的大小写敏感
  • 双引号中的特殊字符会转义输出,如"hello \n world"会发生换行
  • 双引号中的特殊字符会原样输出,如‘hello \n world’所见即所得

配置示例

# src/main/resources/application.properties
server.port=8081
# src/main/resources/application.yaml
server:
    port: 8081

# 对象形式
student:
    name: zhangsan
    age: 18

# 行内对象形式
student: {name: zhangsan,age: 18}

# 数组形式
pets:
    - cat
    - dog
    - pig

# 行内数组形式
pets: [cat,dog,pig]

配置 banner

# src/main/resources/banner.txt
# https://www.bootschool.net/ascii-art
        _ _                                     
      _(9(9)__        __/^\/^\__                
     /o o   \/_     __\_\_/\_/_/_               
     \___,   \/_   _\.'       './_      _/\_    
      `---`\  \/_ _\/           \/_   _|.'_/    
            \  \/_\/      /      \/_  |/ /      
             \  `-'      |        ';_:' /       
             /|          \      \     .'        
            /_/   |,___.-`',    /`'---`         
             /___/`       /____/                

注入 yaml 配置文件(方式一)

package com.wu.helloworld.pojo;

@component
public class dog {
    @value("阿黄")
    private string name;
    @value("18")
    private integer age;
}
@springboottest
class helloworldapplicationtests {
    @autowired
    dog dog;

    @test
    public void contextloads() {
        system.out.println(dog)
    }
}

注入 yaml 配置文件(方式二)

<!-- 导入配置文件处理器依赖,需要重启ide -->
<dependency>
  <groupid>org.springframework.boot</groupid>
  <artifactid>spring-boot-configuration-processor</artifactid>
  <optional>true</optional>
</dependency>
package com.wu.helloworld.pojo;

@component
public class dog {
    private string name;
    private integer age;
    
    //构造函数、get、set、tostring 等方法  
}
@component
@configurationproperties(prefix = "person")
public class person {
    private string name;
    private integer age;
    private boolean happy;
    private date birth;
    private map<string,object> maps;
    private list<object> lists;
    private dog dog;
    
    //构造函数、get、set、tostring 等方法  
}
person:
  name: wu_${random.uuid}
  age: ${random.int}
  happy: false
  birth: 2000/01/01
  maps: {k1: v1,k2: v2}
  lists:
   - code
   - girl
   - music
  dog:
    name: ${person.dogname:默认名字}_旺财
    age: 1
@springboottest
class demoapplicationtests {
    @autowired
    person person;

    @test
    public void contextloads() {
        system.out.println(person);
    }
}

注入 properties 配置文件

设置 properties 的编码格式为utf-8:

file / settings / file encodings / properties files / utf-8 && √ transparent native-to-ascii conversion

# src/main/resources/person.properties
person.name=wu
person.age=18
person.sex=男
@propertysource(value = "classpath:person.properties")
@component
public class person {
    @value("${person.name}") // 从配置文件中取值
    private string name;
    @value("#{9*2}")  // #{spel} spring表达式
    private int age;
    @value("男")  // 字面量
    private string sex;
}

松散绑定

dog:
    first-name: 旺财
    age: 3

@component
public class dog {
    private string firstname;  // 可以绑定横杠的配置值
    private integer age;
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网