一、.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
网友评论