spring boot 之配置文件

springboot配置文件

spring boot虽然简化了我们的开发,使我们不需要编写那些配置文件,但是也不是完全不用编写,其中的pom.xml(gradle构建为build.gradle)文件可以自动生成,但是spring boot启动时的application.yml(application.properties)文件还是需要开发人员手动编写的。
在以前的开发中,已经熟悉application.properties的书写方式,所以这里重点介绍yml

YAML

YAML是"YAML Ain’t a Markup Language"(YAML不是一种置标语言)的递归缩写。
在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种置标语言)(百度百科解释,一脸懵。。。)
总之,这种语言以数据为中心,巧妙避开各种如:引号、括号等,容易上手,比json、xml等更适合做配置文件。

基本语法

k:(空格)v: 键值对 (空格必须有)

他是以空格缩进来控制层级关系的,并且属性和值大小写敏感

server:
    port: 8081
    path: /hello

值的写法

普通值(字符串,数字,布尔)

K:V: 直接写;字符串默认不用加单引号或双引号
字符串默认不用加上单引号或者双引号;

    "":双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

			name:   "zhangsan \n lisi":输出;zhangsan 换行  lisi

	'':单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据

			name:   ‘zhangsan \n lisi’:输出;zhangsan \n  lisi
对象,map(键值对形式)

k: v:在下一行来写对象的属性和值的关系;注意缩进

person:
	name: zhangsan 
	age: 20

也可以写在一行:

person:{name: zhangsan, age: 20}
数组(list,set)

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

person:
	- man
	- woman

也可以写在一行:

person: [man,woman]

配置文件值的注入@ConfigurationProperties&@value

配置文件

person:
    name: zhangsan
    age: 18
    boss: false
    birth: 2019/03/26
    maps: {k1: v1,k2: 12}
    lists:
      - car
      - house
    cat:
      name: tom
      age: 8

pojo:

/**
 * 将配置文件中配置的每一个属性的值,映射到这个组件中
 * @ConfigurationProperties:将本类中的所有属性和配置文件中相关的配置进行绑定;
 *      prefix = "person":配置文件中哪个key下面的所有属性进行一一映射
 *
 *  Component只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
 *
 */
@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 Cat cat;

数据校验:

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {

   //name必须是邮箱格式
    @Email
    private String name;
    
    private Integer age;
    private Boolean boss;
    private Date birth;
    private Map<String,Object> maps;
    private List<Object> lists;
    private Cat cat;

@value 与在spring中的方式相同,不过多做解释。
@ConfigurationProperties 优势在于可以批量注入配置文件属性,支持数据校验以及复杂类型封装,二者没有绝对的好与坏,根据实际情况来进行选择。
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;

加载指定的配置文件

我们如果将所有的配置数据都写在application.yml文件中,就会显得太过于臃肿,不利于维护,所以就要将这些数据抽取出来再与JavaBean进行映射。

/**
 * 将配置文件中配置的每一个属性的值,映射到这个组件中
 * @ConfigurationProperties:将本类中的所有属性和配置文件中相关的配置进行绑定;
 *      prefix = "person":配置文件中哪个下面的所有属性进行一一映射
 *
 * @PropertySource 值为对应文件的路径;
 */

@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
	private String name;
    private Integer age;
    private Boolean boss;

多环境配置

我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml
默认使用application.properties的配置;
yml支持多文档块方式:

server:
  port: 8081
spring:
  profiles:
    active: prod		#激活对应环境

---
server:
  port: 8082
spring:
  profiles: dev

---

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

关于spring boot配置文件的内容,大体就这么多啦,这也是工作中常用到的,以后会继续补充。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值