SpringBoot3笔记——配置相关

配置文件分类

SpringBoot是基于约定的,许多配置都有默认值,可以使用application.properties或者application.yml(application.yaml)进行配置。properties与yaml格式区别:

  • properties格式:
 server.port = 8080 设置tomcat插件启动时的端口号
  • yaml格式:
server:
	port: 8080 注意:冒号之后必须要有一个空格

如果在同一个目录中,application.properties,application.yml和application.yaml同时存在,那么优先级为:application.properties > application.yml > application.yaml,优先执行高优先级文件中的相同配置。

YAML

YAML是一种直观的能够被电脑识别的数据序列化格式,容易和脚本语言交互,可以被支持YAML库的不同的编程语言程序导入。YAML文件是以数据为核心的,比传统的xml方式更加简洁。YAML的扩展名可以使用.yml或.yaml。
三种配置文件格式对比:
在这里插入图片描述

YAML基本语法

  • 大小写敏感
  • 数据值前边必须有空格,作为分隔符
  • 使用缩进表示层级关系
  • 缩进时不允许使用Tab键,只允许使用空格(各个系统Tab对应的空格数可能不同,导致层次混乱)
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • # 表示注释,从这个字符一直到行尾,都会被解析器忽略

YAML数据格式

  • 对象(map):键值对的集合
person:
	name: zhangsan
# 行内写法:
person: {name: zhangsan}
  • 数组:一组按次序排列的值
address:
	- beijing
	- shanghai 
# 行内写法
address: {beijing, shanghai}
  • 纯量:单个的、不可再分的值
msg: 'hello \n word' # 单引忽略转义字符
msg: "hello \n word" # 双引识别转义字符

参数引用

name: lisi

person:
	name: ${name} # 引用上边定义的name值

获取YAML文件中的数据

  1. @Value
    在类文件中获取YAML定义的属性:
@Value("${name}") # 注意这里的name要和配置文件中定义的属性名称一致
private String name;

或者:
@Value("${person.name}") # 访问person下的name属性
private String name;

数组的注入方式:

@Value("${address[0]}") # 通过角标的形式获取
private String address1;
  1. Environment
    通过对象注入的方式:
@Autowired
private Environment env; // 注意这的Environment是从org.springframework中导入进来的
  1. @ConfigurationProperties
    定义一个配置属性类,添加@ConfigurationProperties注解,该类可以直接读取配置文件中的属性值:
@Component  // 表示该类被Spring所识别,是一个Bean
@ConfigurationProperties(perfix = "person")// 添加完该注解之后,该类或自动读取配置文件中对应的属性值
// perfix属性用于控制前缀,表明读取person下的name和age,不然会默认读取person外的name
public class Person {
   private String name;
   private int age;

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }

   public int getAge() {
       return age;
   }

   public void setAge(int age) {
       this.age = age;
   }
}

profile

在开发Spring Boot应用时,通常同一套程序会被安装到不同场景,其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置文件,这会非常麻烦。profile功能就是进行动态配置切换的。

  1. profile的配置方式
    • 多profile文件(多配置文件)方式:针对不同的环境,设置一个配置文件,如:application-dev.properties, application-pro.properties, application-test.properties
    • yml多文档方式:在yml文件中(applicattion.yml),设置多个配置,每个配置之间用(—)进行分割,如图:在这里插入图片描述
  2. profile激活方式
    • 配置文件:在配置文件(application.properties)中设置,spring.profiles.active = dev # 这里的dev与profile中的后缀保持一致,此时会加载application-dev.properties中的配置内容,对应不同环境时,修改这个值就可以了;针对yaml多文档形式的激活——依然在application.yml中进行激活,如:
      在这里插入图片描述

    • 虚拟机参数:
      在这里插入图片描述

    • 命令行参数:(方式1) 可以通过开发工具进行设置;(方式2) 运行jar包的时候进行指定
      方式1:
      在这里插入图片描述
      方式2:
      在这里插入图片描述

内部配置加载顺序

Springboot程序启动时,会从以下位置加载配置文件:

  1. file:./config/:当前项目下的/config目录下
  2. file:./ :当前项目的根目录
  3. classpath:/config/: classpath的/config目录
  4. classpath:/ :classpath的根目录

加载顺序文以上的排列顺序,高优先级配置的属性会生效。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值