SpringBoot中yml文件读取笔记

2022-03-11  本文已影响0人  数字d

一、.yml文件的读取方式

在resource文件夹下面创建一个application.yml文件
内容大概如下,注意port:和8080中间有个空格的,所有的“:”后面都有

server:
  port: 8080
  servlet:
    session:
      timeout: 30
  tomcat:
    uri-encoding: UTF-8
age: 19
name: name out
info: info out
personinfo:
  name: name inner
  age: 30
  info: info  inner

1.外层数据读取:

在test文件夹下面创建PropertTest类文件

输入以下代码

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

/**
 * Copyfright(C),2022-2022,复兴元宇科技有限公司
 * FileName:PropertTest
 * Author:yz
 * Date:2022/3/10 1:38 下午
 * Description:
 * History:
 * <author>  <time> <version> <desc>
 * 作者       时间    版本      描述
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class PropertTest {
    @Value("${age}")
    private int age;

    @Value("${name}")
    private String name;

    @Value("${info}")
    private String info;

    @Test
    public void getAge() {
        System.out.println(age);
    }
    @Test
    public void getName() {
        System.out.println(name);
    }

    @Test
    public void getInfo() {
        System.out.println(info);
    }

    @Autowired
    private GetPersonInfoProperties getPersonInfoProperties;
    @Test
    public void getGetPersonInfoProperties() {
        System.out.println(getPersonInfoProperties.getName() + " " + getPersonInfoProperties.getAge());
    }
}

使用test运行,测试获取信息

2.内层数据获取

scr/main/java文件夹下面创建一个GetPersonInfoProperties类,代码如下:

package com.example.demo;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Component
@ConfigurationProperties(prefix = "personinfo")
    public class GetPersonInfoProperties {
    private int age;
    private String name;
    private String info;

    public String getName() {
        return name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setInfo(String info) {
        this.info = info;
    }

    public String getInfo() {
        return info;
    }

}

3.测试调用

在程序执行的位置,初始化GetPersonInfoProperties对象,然后调用get方法获取对应属性

   @Autowired
    private GetPersonInfoProperties getPersonInfoProperties;
    @RequestMapping("/innername")
    public String name() {
        return getPersonInfoProperties.getName();
    }
    @RequestMapping("allinfo")
    public String  allinfo() {
        return getPersonInfoProperties.getAge() + " " + getPersonInfoProperties.getName() + " " + getPersonInfoProperties.getInfo();
    }

项目本地运行

测试结果:
在浏览器上输入127.0.0.1:8080/allinfo

数据获取完成~


二、使用.properties文件的读取方式

1.常规操作创建allication.properties文件

com.example.name=${name:name}
com.example.age=18
com.example.address[0]="beijing"
com.example.address[1]="shenzhen"
com.example.address[2]="haikou"

2.文件处理类配置项

@Component
@ConfigurationProperties(prefix="com.example")
public class CoExample {
        private String name;
        private int age;
        private List<String> address;

}

3.编写测试和文件配置项

@SpringBootTest
@RunWith(SpringRunner.class)
public class COExampleTest {
        @Autowired
        private CoExample coExample;

        @Test
        public void getName() {
           System.out.println(coExample.getName());
        }

        @Test
        public void getAge() {
           System.out.println(coExample.getAge());
        }

       @Test
        public void getAddress() {
           System.out.println(coExample.getAddress());
        }
      
}

运行和检查测试文件

三、使用.yml配置多环境

比如在resource文件中创建三个.yml文件分别是

application-dev.yml 测试环境
aoolication-prod.yml 生产环境
application.yml主配置文件

接下来将每个文件的具体内容编写合理
application-dev.yml文件内容

server:
  port: 8080
  servlet:
    session:
      timeout: 30
  tomcat:
    uri-encoding: UTF-8
myenvironment: 
    name:dev

application-prod.yml文件内容

server:
  port: 8080
  servlet:
    session:
      timeout: 30
  tomcat:
    uri-encoding: UTF-8
myenvironment: 
    name:prod

主文件application.yml

spring:
    profiles:
        active:dev

active这里是dev表示是调试模式,如果发布那么需要修改active的值为prod
编写测试:

@RunWith(SpringRunner.class)
@SprinngBootTest
public class MutiYmiDemoApplicationTest{
@Value("${myenvironment.name}")
private String name;
@Test

public void getMyEnvironment(){
  System.out.printlnn(name);
}
}

运行测试。

变更环境,如果需要发布项目,那么需要将application.yml中的active:dev改为active:prod

四、使用.properities配置多环境

文件

com.example.name=${name:longtao}
com.example.age=18
com.example.address[0]=\u5317\u4EAC
com.example.address[1]=\u4E0A\u6D77
com.example.address[2]=\u5E7F\u5DDE

道理和第三种方式一样,就是把配置文件的dev改为prod

spring.profiles.active=dev

也可以在运行jar包时候指定配置文件

java -jar name.jar --spring.profile.active=pro
上一篇下一篇

猜你喜欢

热点阅读