每天花三分钟学习Springboot文档-yaml配置文件说明

目录

一、给实体类赋值的三种方法,多用于yaml给配置文件赋值

二、当存在多个配置文件时,我们如何去选择激活哪一个配置文件呢?

三、yaml还可以去修改装配类的属性。


一、给实体类赋值的三种方法,多用于yaml给配置文件赋值

第一种直接注入

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
public class Dog {
    @Value("旺财")
    private String name;
    @Value("3")
    private Integer age;
}

然后在springboot提供的测试类中去测试

@SpringBootTest
class SpringBootTestApplicationTests {

    @Autowired
    //@Qualifier 可以指定某一条狗
    private Dog dog;

    @Test
    void contextLoads() {
        System.out.println(dog);
    }

}

结果输出正确

 

第二种利用yaml配置文件

在springboot中,我们常用的是yaml配置文件,接下来看看如何去用yaml配置文件去实现实体类

yaml文件的格式是键值对 key: value,冒号后面需要有一个空格,同一级数据结构在同一列,比如

person:
  name:
    surname:zhang

上述代码相当于 person.name.surname=zhang;

person:
  name: ${random.uuid}
  age: ${random.int}
  happy: false
  birth: 2019/11/02
  maps: {k1: v1,k2: v2}
  lists:
    - code
    - music
    - girl
#如果person.hello的值存在,则结果为person.hello的值+_旺财
#如果person。hello的值不存在,则结果为hello_旺财
#hello为默认值
  dog:   
    name: ${person.hello:hello}_旺财
    age: 3

实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
//如果不配置这个注解,就会提示爆红,可以通过这个注解产生提示
//引入spring-boot-configuration-processor依赖后爆红消失
//prefix = "person"这个person值就是yaml中配置的key
@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;
}

测试类测试

@SpringBootTest
class SpringBootTestApplicationTests {

    @Autowired
    private Person person;

    @Test
    void contextLoads() {
        System.out.println(person);
    }

}

结果输出正确

第三种自定义配置文件

 

 zxc.properties中的的内容

name=zhangsan
age=15

实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
//javaConfig绑定配置文件,可以采取这些方式!
//加载指定的配置文件
@PropertySource(value = "classpath:zxc.properties")
public class Person {
    //SPEL表达式取出配置文件的值
    @Value("${name}")
    private String name;
    @Value("${age}")
    private Integer age;
    private Boolean happy;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
}

测试类测试

@SpringBootTest
class SpringBootTestApplicationTests {

    @Autowired
    private Person person;

    @Test
    void contextLoads() {
        System.out.println(person);
    }

}

结果输出正确

二、当存在多个配置文件时,我们如何去选择激活哪一个配置文件呢?

可以配置多个文件

#springboot的多环境配置,可以选择激活哪一个配置文件
spring.profiles.active=dev

而yaml文件只需要配置一个即可

---之间代表一个文件,下列代码总共分成了三个文件,与上面三个文件等价

server:
  port:8080
#选择激活哪一个版本
spring:
  profiles:
    active: dev
---

server:
  port: 8081
#给文件命名为dev
spring:
  profiles:dev

---
server:
  port: 8082
#给文件命名为test
spring:
  profiles:test

三、yaml还可以去修改装配类的属性。

springboot会通过xxxAutoConfiguration注解自动装配很多的类,而这些类的所有默认值都是从Properties中获取的,可以通过yaml配置文件直接去修改这些默认值,比如修改端口号

server:
  port: 8081

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗头实习生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值