当前位置: 首页 > news >正文

【后端开发】Spring配置文件

文章目录

  • 配置文件
  • properties配置文件
    • 基本语法
    • 读取配置文件
  • yml配置文件
    • 基本语法
    • 读取配置文件
      • 配置空字符串及null
      • 单双引号
      • 配置对象
      • 配置集合
      • 配置Map
    • 优缺点
      • 优点
      • 缺点

配置文件

  • 硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中,也就是常说的"代码写死"。
  • 配置文件主要是为了解决硬编码带来的问题,把可能会发生改变的信息,放在一个集中的地方,当启动程序时,应用程序从配置文件中读取数据,并加载运行。
  • 使用配置文件,可以使程序完成用户和应用程序的交互,或者应用程序与其他应用程序的交互
    SpringBoot支持并定义了配置文件的格式,Spring Boot 配置文件有以下三种:

1.application.properties
2.application.yml
3.application.yaml

  • 理论上讲 .properties 和 .yml 可以并存在于⼀个项⽬中,当 .properties 和 .yml 并存时,两个配置都会加载,如果配置⽂件内容有冲突,则以 .properties 为主, 也就是 .properties 优先级更⾼。
  • 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,通常会采取⼀种统⼀的配置文件格式,这样可以更好的维护(降低故障率)。

properties配置文件

properties 配置文件是最早期的配置文件格式,也是创建 SpringBoot 项目默认的配置文件。

基本语法

properties 是以键值的形式配置的,key 和 value 之间是以"="连接的。
示例:
设置服务器端口号为9090,默认为8080。

# 配置项⽬端⼝号
Server.port=9090

配置连接数据库信息。

#配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
  • 缺陷:properties 配置文件中会有很多的冗余的信息。

读取配置文件

如果在项目中,想要主动的读取配置文件中的内容,可以使用 @Value 注解来实现。

@Value 注解搭配使用" ${}"的格式读取

配置文件设置变量。

library.page.num=10

读取配置文件的变量。

@Repository
public class BookDao {
    @Value("${library.page.num}")
    private int num;
}

yml配置文件

yml 为yaml的简写,实际开发中出现频率最高,yaml 和ylm 的使用方式一样。

基本语法

yml 是树形结构的配置文件,它的基础语法是"key: value",key 和 value 之间使用英文冒号加空格的方式组成,空格不可省略。

# 配置项⽬端⼝号
server:
  port: 9090

配置连接数据库信息。

#配置数据库连接信息
spring:
  datasource:
  url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8&useSSL=false
  username: root
  password: 123456

读取配置文件

yml读取配置的方式和 properties 完全相同

配置空字符串及null

# Null,~代表null
null.value: ~
 
# "" 空字符串
#:直接后⾯什么都不加就可以了, 但这种⽅式不直观, 更多的表⽰是使⽤引号括起来
empty.value: ''

单双引号

string:
  str1: Hello \n Spring Boot.
  str2: 'Hello \n Spring Boot.'
  str3: "Hello \n Spring Boot"

字符串默认不用加上单引号或者双引号
单引号会转义特殊字符,使其失去特殊功能,始终是一个普通的字符串----特殊字符没用了,比如“\n”
双引号不会转义字符串里面的特殊字符,特殊字符会表示本身的含义----特殊字符有用,比如“\n”

配置对象

示例:

student:
  id: 1
  name: zhangsan
  age: 19

接收该对象时,需要搭配 @ConfigurationProperties 注解来读取。

@ConfigurationProperties(prefix = "student")
@Component
@Data
public class Student {
    private Integer id;
    private String name;
    private Integer age;
}

配置集合

list:
  name:
    - aa
    - bb
    - cc

集合的读取和对象一样,使用 @ConfigurationProperties 来读取。

@Component
@ConfigurationProperties("list")
@Data
public class ListConfig {
    private List<String> name;
}

配置Map

mapList:
  map:
    k1: v1
    k2: v2
    k3: v3

集合的读取和对象一样,使用 @ConfigurationProperties 来读取。

@Data
@Component
@ConfigurationProperties("mapList")
public class MapConfig {
    private Map<String, String> map;
}

优缺点

优点

  • 可读性高,写法简单, 易于理解
  • 支持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态
  • 支持更多的编程语言,不止是java中可以使用,在Golang,Python,Ruby,JavaScript中也可以使用

缺点

  • 不适合写复杂的配置⽂件
  • 对格式有较强的要求(空格规范)

相关文章:

  • ubuntu22.04-VMware Workstation移动后无法连接网络
  • 【视频目标分割论文集】Efficient Track Anything0000
  • 【深度学习与大模型基础】第11章-Bernoulli分布,Multinoulli分布
  • LeetCode 热题 100_单词拆分(86_139_中等_C++)(动态规划)
  • 【从C到C++的算法竞赛迁移指南】第五篇:现代语法糖精粹 —— 写出优雅的竞赛代码
  • 豪越消防一体化安全管控平台:构建消防“一张图”新生态
  • Java Web 300问
  • 大数据(7.4)Kafka存算分离架构深度实践:解锁对象存储的无限潜能
  • STM32基础教程——AD单通道
  • 一款安全好用的企业即时通讯平台,支持统一门户
  • 单链表各种操作实现(数据结构C语言多文件编写)
  • 中介者模式:理论、实践与 Spring 源码解析
  • MDP 值迭代算法
  • AI推理强,思维模型也有功劳【60】启发式偏差思维
  • WITRAN_2DPSGMU_Encoder 类中,门机制
  • 高级语言调用C接口(四)结构体(2)-Python
  • 如何在本地修改 Git 项目的远程仓库地址
  • 智算启新篇 安全筑新基 ——中国移动举办智算基础设施及安全分论坛
  • C++ 智能指针底层逻辑揭秘:优化内存管理的核心技术解读
  • Java 中常见的数据结构
  • 小耳朵等来了春天:公益义诊筛查专家走进安徽安庆
  • 外交部:各方应为俄乌双方恢复直接对话创造条件
  • 违法违规收集使用个人信息,爱奇艺、轻颜等65款App被点名
  • 大外交|中美联合声明拉升全球股市,专家:中美相向而行为世界提供确定性
  • 射箭世界杯上海站摘得两银,中国队新周期冲击韩国缩小差距
  • 郑州通报“夜市摊贩收取香烟交给城管”:涉事人员停职调查