springboot中的配置文件

springboot中的配置文件

springboot 使用一个全局的配置文件,且名称固定

  • application.yml
  • application.properties

配置文件的作用:修改 springboot 的默认配置

yml 语法

1.基本语法

k:(空格)v ,空格必须有
以空格的缩进来控制层级关系,只要是左对齐的一列数据,都是同一个层级

server:
  port: 8080
  servlet:
    context-path: /text

属性和值也是大小写敏感的

2.值的写法

k: v(数字、字符串、布尔值)

字符串默认不需要加上单引号或者双引号
“”:双引号:不会转义字符串中的特殊字符:特殊字符会作为本身要表达的意思显示出来
‘’:单引号:会转义特殊字符,特殊字符最终只是一个普通的字符串

# yml中的数据
t1:
  k1: 正常字符串 \n ֱ正常字符串
  k2: "双引号字符串 \n 双引号"
  k3: '单引号字符串 \n 单引号'
package com.yml.springbootyml.entity;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * @Author: chenshuo
 * @Date: 2020/3/18 13:47
 */
@Component
public class TestYml {
	@Value("${t1.k1}")
	String k1;
	@Value("${t1.k2}")
	String k2;
	@Value("${t1.k3}")
	String k3;
	
	//省略setter getter方法
	@Override
	public String toString() {
		return "TestYml{" +
				"k1='" + k1 + '\'' +
				", k2='" + k2 + '\'' +
				", k3='" + k3 + '\'' +
				'}';
	}
}

注意:
1.@Value必须在注册类中使用,且类加载方式必须为注入方式
2.@Value不能注释在static或者final的变量

测试类

@SpringBootTest
class SpringBootYmlApplicationTests {
	@Autowired
	TestYml testYml;
	@Test
	void contextLoads() {
		System.out.println(testYml);
	}

}

结果如图(如果出现乱码,setting 中搜索 file encodings,将编码格式改成utf-8)
在这里插入图片描述

对象、Map(键值对)
people:
  name: zhangsan
  age: 18

行内写法:

people: {name: zhangsan,age: 18}
数组(list、set)

用- 值表示数组中的一个元素

pets:
  - cat
  - dog
  - pig

行内写法

pets: [cat,dog,pig]

配置文件值注入

person:
  age: 19
  boss: false
  birth: 1995/9/29
  maps:
    k1: v1
    k2: v2
  lists: [lisi,zhaoliu]
  dog:
    name: 旺旺
    age: ${random.int}
  name: zhangsan

person实体类、dog实体类

package com.yml.springbootyml.entity;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author: chenshuo
 * @Date: 2020/3/18 14:35
 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
	private String name;
	private Integer age;
	private boolean boss;
	private Date birth;

	private Map<String,Object> maps;
	private List<Object> lists;
	private Dog dog;

	@Override
	public String toString() {
		return "Person{" +
				"name='" + name + '\'' +
				", age=" + age +
				", boss=" + boss +
				", birth=" + birth +
				", maps=" + maps +
				", lists=" + lists +
				", dog=" + dog +
				'}';
	}
	//getter,setter
}

在测试类中测试的结果

注意:实体类:注解注入的方式添加

Person{name='zhangsan', age=19, boss=false, birth=Fri Sep 29 00:00:00 CST 1995, maps={k1=v1, k2=v2}, lists=[lisi, zhaoliu], dog=Dog{name='旺旺', age=-2115370800}}

配置文件中还支持占位符:占位符获取之前指定的值,如果没有,可以通过:指定默认值

person:
  age: 19
  boss: false
  birth: 1995/9/29
  maps:
    k1: v1
    k2: v2
  lists: [lisi,zhaoliu]
  dog:
  	# 使用占位符 ${} ${person.lastName:lisi} 找不到lastName,默认值是lisi
    name: ${person.name}_旺旺 
    age: ${random.int}
  name: zhangsan

结果:
在这里插入图片描述

Profile

1、多Profile文件

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml

默认使用application.properties的配置;

2、yml支持多文档块方式


server:
  port: 8081
spring:
  profiles:
    active: prod

---
server:
  port: 8083
spring:
  profiles: dev


---

server:
  port: 8084
spring:
  profiles: prod  #指定属于哪个环境

3、激活指定profile

​ 1、在配置文件中指定 spring.profiles.active=dev

​ 2、命令行:

​ java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;

​ 可以直接在测试的时候,配置传入命令行参数

​ 3、虚拟机参数;

​ -Dspring.profiles.active=dev

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值