springboot的yml配置注入

springboot的yaml注入

配置文件的作用:修改springbooot自动配置的默认值,因为spring boot在底层都给我们自动配置好了;

例子:修改启动端口

server:
	prot: 8081

1、yaml语法

  • 空格不能省略
  • 以缩进来控制层级关系,只要是左对齐的一列数据都是同一个层级的。
  • 属性的值和大小写都是十分敏感的

字面量:普通的值【数字,布尔值,字符串】

字面量直接写在后面就可以,字符串默认也不用加上双引号或单引号;

注意

  • “” 双引号

    例如:name:“kanren \n kanxin” 输出:kanren 换行 kanxin

  • ''单引号

    例如:name:‘kanren \n kanxin’ 输出:kanren \n kanxin

对象、Map<key,value>

person:
	name: 寒笑
	age: 22

行内写法

person: {name: 含笑,age: 22}
k:
	v1:
	v2:

数组(List、set)

pets:
 - cat
 - dog
 - pig

行内写法

pets: [cat,dog,pig]

2、yaml注入配置文件

  1. 在springboot项目中的resource目录下新建一个文件application.yml

  2. 编写一个实体类Dog

    package com.hanxiao.springboot.pojo;
    
    @Component  //注册bean到容器中
    public class Dog {
        private String name;
        private Integer age;
        //有参无参构造、get、set方法、toString()方法  
    }
    
  3. 原来给bean注入属性值:@Value(“”)

    @Component //注册bean
    public class Dog {
        @Value("阿黄")
        private String name;
        @Value("18")
        private Integer age;
    }
    
  4. 在SpringBoot的测试类下注入狗狗输出一下

    @SpringBootTest
    class DemoApplicationTests {
        @Autowired //将狗狗自动注入进来    
        Dog dog;
        @Test    
        public void contextLoads() {       
            System.out.println(dog); //打印看下狗狗对象   
        }
    }
    

    结果成功输出,@Value注入成功,这是我们原来的办法对吧。

  5. 编写一个person类

    @Component //注册bean到容器中
    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()方法  
    }
    
  6. 使用yaml配置进行注入

    person:
      name: hanxiao
      age: 22
      happy: false
      birth: 2000/01/01
      maps: {k1: v1,k2: v2}
      lists:
       - code
       - girl
       - music
      dog:
        name: 旺财
        age: 1
    
  7. 在application.properties中注入

    /*
    @ConfigurationProperties作用:
    将配置文件中配置的每一个属性的值,映射到这个组件中;
    告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
    参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应
    */
    @Component //注册bean
    @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;
    }
    
  8. 此时,还需要导入一依赖

    <!-- 导入配置文件处理器,配置文件进行绑定就会有提示,需要重启 -->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>
    
  9. 到测试类中测试

    @SpringBootTest
    class DemoApplicationTests {
    
        @Autowired
        Person person; //将person自动注入进来
    
        @Test
        public void contextLoads() {
            System.out.println(person); //打印person信息
        }
    }
    

加载指定配置文件

@PropertySource:加载指定配置文件

  1. 在resource目录下新建一个person.properties文件

    name=hanxiao
    
  2. 指定加载person.properties文件

    @PropertySource(value = "classpath:person.properties")
    @Component //注册bean
    public class Person {
    
        @Value("${name}")
        private String name;
    
        ......  
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值