Spring Boot的配置文件

Spring Boot中的配置文件有两种:properties格式和yml格式

一、propertise格式

  1. propertise格式是Springboot默认的配置文件的格式,它才有键值对key=value的方式存储配置信息,有系统key值和自定义key值两类。
  • 系统key值就是Spring boot约定的一些key值,通过设置这些key对应的value值可以配置对应功能。比如:
    servlet.port=8090
    这条键值对就是设置servlet的端口号的。
  • 自定义的key值就是可以自己设计一些key=value的键值对写在配置文件中,不用声明直接写就行。比如:
    student.id=10
    student.name=zhangsan
    这两个就是我自定义的键值对,也可以写在配置文件中。
  1. 默认情况下的properties是不支持中文的,因为他的字符集不是utf8,所以在注释中写中文时,会出错。

    需要再idea的设置里面,搜索encoding
    将下方的两个设置项都改成utf8.

二、yaml格式

也可以简写成yml,全称是yet another mark language,另一种标记语言。

  1. 为什么有了propertise格式还要有yml格式?

propertise和yaml的关系就是新老版本之间的关系,propertise是java标准库规定的配置文件,而yaml是一个跨语言的,多平台可用的配置文件。

因为在实际工程中,通常一个项目不是由一个团队做的,而是多个团队共同开发,一个团队负责一个模块的开发,各个团队使用的语言配置文件格式都不一样,spring boot就是properties,最终一个项目可能有很多类型的配置文件,这对最终使用配置的运维团队是不友好的,所以就出现了yml配置文件。

yaml的跨语言特性,大大的减轻了项目的最终使用者的配置难度。

  1. yaml的语法格式
    yaml采用了一种类似于json的语法key: value.不同的是yaml的语法要求更加严格。

    • key:后面必须加一个空格才能接着写value。key: value,不能是key:value。

    • yaml的层级次序是通过行头的tab个数多少形成的。比如在propertise中:

      java 复制代码
      spring.datasource.username=root

      在yaml中:

      yaml 复制代码
      spring:
      	datasource:
      		username: root
  2. 在yaml里面表示字符串
    有三种方法,单引号,双引号和不加引号,都能表示字符串。
    但是只有双引号括起来的字符串中如果有转义字符的话最终结果是转义后的字符,单引号和不加引号都是所见即所得,写啥就是啥。

三、获取配置文件中的属性和对象

  1. @Value注解(获取配置文件中的属性)
    在配置文件中写的键值对也是可以再项目代码中获取到的。

    • @Value注解就是通过选择key值从而获取key值对应的value值的注解。

      java 复制代码
      @Value("${student.name}")
      private String name;

      注意:必须要将配置项的key值放在{}中才能获取到对应的value值,如果不加 {},如下:

      java 复制代码
      @Value("student.name")
      private String name;

      下方的name属性就只会获取到被传的这个"student.name"这个字符串。

  2. @ConfigurationPropertise(获取配置文件中的对象)

    • 比如在配置文件中自定义了一个对象
      propertise格式:

      yaml格式:

      都可以看做是一个对象,内部有一个name和age两个属性。可以从配置文件中直接获取到这个对象。
    1. 要定义一个此对象的接受类。
      • 类属性名和对象属性名对应。
      • 将这个类添加到Spring容器中,作为Bean。
      • 使用@ConfigurationPropertise注解,指定配置文件中的对象名。
      • 要实现这个类的getter和setter函数
    2. 获取到这个配置文件中的对象
      使用@Autowired注入,和获取普通的Bean对象一样。

四、Propertise VS yaml

  • Propertise以key=value的形式配置文件,yaml以key:value的形式配置文件,层级之间使用换行缩进的方式配置,并且:后面必须加上空格才能写value。
  • Propertise是早期的默认的配置文件,但是配置存在一些冗余配置,使用yaml可以解决冗余问题。
  • yaml支持更多的语言,通用性更好。
  • yaml支持更多的数据类型。

五、常用配置项

  • 在实际的开发环境中,一般都会有多个配置文件,这是因为每个配置文件,对应一个生产环境,而每个环境的资源端口号配置都是有变换的,所以需要有多个配置文件,为了方便,在yml中将配置文件可以分为主次,主配置文件指定本次运行要使用哪个配置文件 spring.profiles.active这个属性配置使用哪个配置文件。
    配置文件的名字都是由规范的,必须都是Application开头,主配置文件的名字就是Application,次配置文件的名字Application-xxx,只有xxx可以自定义。
    配置属性的acitve的value值就是xxx
    比如现在有这么多配置文件:

    如果想让Application-dev做最终的配置文件,就必须要在默认的配置文件中设置spring.profiles.active=dev。
    此时九江dev配置文件给配置完成了。

其他的配置项文档:Spring Boot配置项文档

相关推荐
海边的Kurisu8 分钟前
苍穹外卖日记 | Day1 苍穹外卖概述、开发环境搭建、接口文档
java
uzong3 小时前
后端线上发布计划模板
后端
C雨后彩虹4 小时前
任务最优调度
java·数据结构·算法·华为·面试
uzong4 小时前
软件工程师应该关注的几种 UML 图
后端
heartbeat..4 小时前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
Jing_jing_X4 小时前
AI分析不同阶层思维 二:Spring 的事务在什么情况下会失效?
java·spring·架构·提升·薪资
上进小菜猪5 小时前
基于 YOLOv8 的 100 类中药材智能识别实战 [目标检测完整源码]
后端
元Y亨H6 小时前
Nacos - 服务发现
java·微服务
微露清风6 小时前
系统性学习C++-第十八讲-封装红黑树实现myset与mymap
java·c++·学习
dasi02276 小时前
Java趣闻
java