SpringBoot .yml配置文件

相关介绍:

SpringBoot支持一种以.yml后缀结尾的配置文件SpringBoot启动时也会默认加载application.yml配置文件。.propertie和.yml配置文件同时存在时,SpringBoot会优先加载.yml(SpringBoot会把.yml转化为.properties文件)

.yml文件是YAML 语言编写的。YAML 是专门用来写配置文件的语言,非常简洁和强大

YAML 语言教程参考:

快速入门:

application.yml

ymlEntity:
  #String  等价于properties中:ymlEntity.simpleTypeProp=simpleDataType
  simpleTypeProp: simpleDataType
  #数组
  arrayTypeProp: 1,2,3,4,5,6,7,8
  #集合类型:List
  listTypeProp:
        - oneData
        - twoData
        - threeData
  #集合类型:Map
  mapTypeProp:
        key1: value1
        key2: value2
        key3: value3
  #复杂类型:List<Map>
  ListMapProp:
        - id: 123456
          name: zjh
        - age: 18
          addr: 海淀
          #支持变量引用:
        - param: "${ymlEntity.simpleTypeProp},${ymlEntity.simpleTypeProp}"
  student: {id: 12345, name: zjhTest,age: ~}

YmlEntity类引用配置项属性值:因为是通过Get/Set方法把配置项给对应对象属性赋值,所以必须生成Set/Get方法。

1、 key: value 中间的空格不可少。
2、 使用缩进表示层级关系
3、 缩进时不允许使用Tab键,只允许使用空格。
4、 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
5、 # 表示注释,从这个字符一直到行尾,都会被解析器忽略。
6、 使用变量时”${ymlEntity.simpleTypeProp}”
7、 ~代表NULL
8、 字符串value之中包含空格或特殊字符,需要放在引号之中。
9、 单引号和双引号都可以使用,双引号不会对特殊字符转义。

public class Student {

    private Integer id;

    private String name;

    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    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;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

@Component
@ConfigurationProperties(prefix="ymlEntity")
public class YmlEntity {

    //@Value("${ymlEntity.simpleTypeProp}")
    private String simpleTypeProp;
    //@Value("${ymlEntity.arrayTypeProp}")
    private String [] arrayTypeProp;
    //@Value("${ymlEntity.listTypeProp}")
    private List<String> listTypeProp;
    //@Value("${ymlEntity.mapTypeProp}")
    private Map<String,String> mapTypeProp;
    //@Value("${ymlEntity.ListMapProp}")
    private List<Map<String,String>> ListMapProp;
    //@Value("${ymlEntity.student}")
    private Student student;


    public void setSimpleTypeProp(String simpleTypeProp) {
        this.simpleTypeProp = simpleTypeProp;
    }

    public void setArrayTypeProp(String[] arrayTypeProp) {
        this.arrayTypeProp = arrayTypeProp;
    }

    public void setListTypeProp(List<String> listTypeProp) {
        this.listTypeProp = listTypeProp;
    }

    public void setMapTypeProp(Map<String, String> mapTypeProp) {
        this.mapTypeProp = mapTypeProp;
    }

    public void setListMapProp(List<Map<String, String>> listMapProp) {
        ListMapProp = listMapProp;
    }

    public String getSimpleTypeProp() {
        return simpleTypeProp;
    }

    public String[] getArrayTypeProp() {
        return arrayTypeProp;
    }

    public List<String> getListTypeProp() {
        return listTypeProp;
    }

    public Map<String, String> getMapTypeProp() {
        return mapTypeProp;
    }

    public List<Map<String, String>> getListMapProp() {
        return ListMapProp;
    }
    public Student getStudent() {
        return student;
    }

    public void setStudent(Student student) {
        this.student = student;
    }
}

@Value测试失败。@Value注解不支持.yml
@ConfigurationProperties(prefix=”ymlEntity”)注解在创建Bean时会把该前缀的配置项与属性值一一对应赋值。需要添加Maven依赖:

<!-- 支持 @ConfigurationProperties 注解 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

DemoApplicationTests

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    @Autowired
    private YmlEntity   ymlEntity;

    @Test
    public void contextLoads() {
        System.out.println("ymlEntity.simpleTypeProp:"+ymlEntity.getSimpleTypeProp());
        System.out.println("ymlEntity.arrayTypeProp:"+ JSON.toJSONString(ymlEntity.getArrayTypeProp()));
        System.out.println("ymlEntity.listTypeProp:"+ymlEntity.getListTypeProp());
        System.out.println("ymlEntity.mapTypeProp:"+ymlEntity.getMapTypeProp());
        System.out.println("ymlEntity.ListMapProp:"+ymlEntity.getListMapProp());
        System.out.println("ymlEntity.student:"+ymlEntity.getStudent().toString());

    }
}   
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值