SpringBoot--配置文件

配置文件

全局配置文件 SpringBoot使用一个全局的配置文件,配置文件名固定:application.properties/application.yml

配置文件目录:在src/main/resource目录或者类路径/config下
配置文件作用:修改SpringBoot自动配置的默认值,比如tomcat监听端口,SpringBoot默认配置为8080,可以通过application.properties设置server.port=8081,修改监听端口。

YML基本语法

YML概念:YAML Ain’t Markup Language,YML不是一门标记语言,该语言以数据为中心
YML和XML对比
YML:

server:
  port: 8081

XML

<server>
<port>8081</port>
</server>

YML语法基本规则
k:(空格)v 表示一对键值对,其中必须要有空格,yml通过空格的缩进来控制层级关系;只要左对齐的一列数据,都是同一层级的;并且属性和值对大小写敏感。

YML各类值的写法

  • 字面量
    k: v 字面量直接写,字符串默认是不需要加上单引号或者双引号
    单引号 不会对特殊字符进行转义,比如\n,输出字符串,也是\n两个字符;不加引号也是该效果
    双引号 会对特殊字符进行转义,比如含有\n,如果打印出来,会是换行;可以理解成字符串

  • 对象、Map(键值对)

    • 多行写法
      需要注意每行开始的空格
    • 单行写法
      使用大括号括起来,键值对之前使用逗号进行分隔,注意key和value之间的空格
  maps: {k1: v1, k2: 12}
person:
  age: 18
  boss: false
  birth: 2000/1/1
  • 数组(List、Set)
    • 多行写法
      每行开始时候使用短横线
    • 单行写法
      使用中括号括起来,键值对之前使用逗号进行分隔
pets: [cat, dog, sheet]

  lists:
    - lisi
    - zhaoliu
    - wangwu

配置文件的注入

这里只是讨论使用不同注解注入的方式,具体配置文件yml和properties都可以使用

  • 方式一:@ConfigurationProperties 用来批量导入配置类;需要注意使用 @Component 注解(或者配合@Bean一起使用),让SpringBoot进行管理;@PropertySource注解,配合使用,可以读取指定的配置文件位置;@PropertySource(value = {“classpath:person.properties”}) 配合 @Validated 注解,支持JSR303配置校验
person:
  age: 18
  boss: false
  birth: 2000/1/1
  maps: {k1: v1, k2: 12}
  lists:
    - lisi
    - zhaoliu
    - wangwu
  dog:
    name: haha
    age: 2
  last-name:xiaoming
/**
 * 将配置文件中配置的每一个属性的值,映射到这个组件中
 * @ConfigurationProperties 告诉Springboot将本类中所有的属性和配置文件中的相关配置进行绑定
 * prefix = "person" 配置文件中那个下面的属性进行一一对应
 *
 * 只有这个组件是容器中的组件,才能使用容器提供的ConfigurationProperties功能
 *
 * @date 2019/10/23
 */
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
  • 方式二:@Value
    value=“字面量/${key}从环境变量、配置文件中获取的值/#{SpEL}表达式”
@Value("${person.lastName}")
private String lastName;
@Value("#{11*2}")
private Integer age;
@Value("true")
private Boolean boss;

Profile多环境支持

场景:测试环境和生产环境需要不同的配置参数,如何在同一套代码中实现

  • 方式一:使用多个properties文件
    在主配置文件编写的时候,文件名可以是 application-{profile}.properties(例如:application-dev.properties)
    默认使用application.properties文件

  • 方式二:在同一个yml文件中使用多文档的方式
    yml使用“- - -”(三个短横)来在一个yml文件中分隔多个文档

server:
  port: 8081

spring:
  profiles:
    active: prod


---
server:
  port: 8085

spring:
  profiles: dev

---
server:
  port: 8086

spring:
  profiles: prod

激活指定的profile文件

  1. 在配置文件中指定
    在properties中,在application.properties中使用 spring.profiles.active=dev 指定
    在yml文件中,在各个文档块里面配置spring.profiles对应的内容,并且spring.profiles.active 指定

  2. 命令行方式
    在启动jar包的时候,传入命令行参数
    java -jar *****.jar --spring.profiles.active=dev

  3. 虚拟机参数
    -Dspring.profiles.active=dev

配置文件的加载位置

spring boot启动会扫描以下位置的application.properties或者application.yml文件作为SpringBoot的默认配置文件

  • file:./config/
  • file: ./
  • -classpath: /config
  • -classpath: / 如在IDEA工程中的resources目录下建立的配置文件

上面是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级配置内容会覆盖低优先级的配置内容;并且形成内容互补

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值