【进阶】Spring Boot配置文件

努力经营当下,直至未来明朗!


普通小孩也要热爱生活!

一、配置文件作用

  1. Class字节码文件只能读,不能进行修改
  2. 配置文件内容是可以直接进行修改的,对于运维人员来说也是比较友好的。
  3. 重要信息直接存入配置文件(如端口、连接数据库等)
  4. 配置文件的分类:
    1)系统的配置文件:比如连接数据库的配置、端口号的设置、日志的相关设置等,是系统定义好的。
    2)用户自定义的配置文件。
  5. 整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如:

数据库的连接信息(包含⽤户名和密码的设置等);
② 项⽬的启动端⼝
③ 第三⽅系统的调⽤秘钥等信息
④ ⽤于发现和定位问题的普通⽇志和异常⽇志等。


二、配置文件的格式

  1. Spring Boot 配置⽂件主要分为以下两种格式:
    .properties (早期版本,默认版本)
    .yml (后期版本,可以视为.properties的升级版)

(二者是可以共存的)

  1. 配置文件是放在resources目录下的
  2. 约定大于配置:只有叫application.properties、application.yml(也就是前面是application才可以在Spring Boot启动的时候被加载
  3. 如果application.properties、application.yml均存在,并且有配置信息冲突时,早期的的application.properties优先!
  4. 特殊说明
    ① 一个项目中可以存放两种配置文件(.properties、.yml),但是不建议一个项目中出现两种配置文件,通常是一个项目一种格式配置文件,提高可维护性。
    ② 当一个项目的某个配置出现在两种格式的配置文件中时,此时匹配项会以properties为主(忽略yml中的配置)。
    ③ 也就是说:.properties文件的优先级更高,但是加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。
  5. 注:.properties就类似于“老款”服饰,而.yml是“新款”

三、properties配置文件说明

1. properties 基本语法

  1. properties配置文件 的基本语法:
    key=value(注意中间是没有空格的,后面也是没有空格的!!)

  2. ⼩技巧:配置⽂件中使⽤“#”来添加注释信息

  3. 另外:.properties默认是不支持中文的(yml支持中文),中文乱码问题的处理方法(但是,该方法受到Spring版本限制,某些版本可以解决乱码,另外一些则不能):
    ① File -> settings(配置当前项目) -> 左边搜索encoding -> 选择 File Encoding -> 全部设置为utf-8(三个) -> ok
    0

② file -> new project settings(配置新建项目) -> 选择settings for new project s-> 后续操作一样
1

删除原来的application.properties,然后重新创建一个application.properties。

因为之前的配置文件已经是不支持中文编码的文件格式,即使设置了编码格式之后也是没有改变原来的配置文件格式的,所以需要先将之前的配置文件删除掉重新创建,以此来实现中文的支持。

④ 经过以上三步之后才能创建一个不是中文乱码的application.properties文件,并且之后再创建application.properties 也是不会出现中文乱码的。

⑤ 或者:直接在类外加上注解,指定配置文件以及编码方式
00000

⑥ 所以:非要使用中文的话,最好的方法是直接使用.yml作为配置文件


2. 读取配置文件

读取单个配置文件

在properties中设置配置文件
2

① 使用@Value注解来读取配置文件的内容

② @Value 注解使⽤“ ${key值}”的格式读取,{}中是key值。

③ 即:@Value(“${key值}”)

④ 注:key值不管是在yml中还是properties中都是x.y的形式(但是实际设置配置文件的时候是有区别的!)
3
5

[补充] 在yml中设置配置文件以及获取到配置文件
6


3. properties缺点分析

  1. properties配置是以key=value(没有空格)的形式进行配置的
    7

  2. 从配置key可以看出,properties 配置⽂件中会有很多的冗余的信息

  3. 要想解决properties文件的冗余信息,就可以使⽤ yml 配置⽂件的格式化了。

  4. 配置文件中出现中文会出现乱码问题:
    00


四、 yml配置文件说明

  1. yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。
  2. yml优点:
    写法简单,可读性更高,语法和JSON类似。
    ② 支持的数据类型更多。

① 它可以简单表达清单(数组)、散列表、标量等数据形态。
② 它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。

③ 可以跨语言使用,如java、golang以及高版本python等

  1. yml是支持中文的,不会出现乱码问题。
    000

1. yml基本语法

  1. 基本语法:Key: value (注意value前面的空格不可以省略!
  2. 使用示例:
    8
  3. [补] yml是树形结构的配置文件

2. yml使用进阶

  1. yml配置不同数据类型及 null
# 字符串
string.value: Hello

# 布尔值,true或false
boolean.value: true
boolean.value1: false

# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制

# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法

# Null,~代表null
null.value: ~
  1. 测试:

① 读取为null的配置:多打印一行空行
9
② 根本不存在的配置:直接报错
10
11

  1. yml配置和读取对象

1)配置对象:不要忘记key: value(空格!
13

2)读取对象
注:@Data是一个集合注解,里面包括get、set、toString、equals等等一系列方法,加上该注解之后就类似已经写了getter、setter、toString等方法(一定要加!!
① 重新创建一个与对象匹配的类,属性名要与配置项中保持一致
② 在该匹配类上加上@Data注释以及@ConfigurationProperties(prefix = “xxx”)[针对的是对象]注释(注意:prefix = “xxx”中的xxx是指配置文件中写好的key值;也**可以直接"key值"**不写prefix)
③读取赋值的过程是在项目的启动中加载的,要加上 五大类注解(不能省略)。
15

④ 然后再另外的那个类中使用属性注入的方式进行读取
16
17

  1. yml配置和读取集合

1)配置集合
18

2)读取集合
① 类似于对象的读取,先创建一个类,然后设置注解@ConfigurationProperties(“xxx,即yml中配置的集合名”) 【注意,这里加不加prefix=都是ok的】
② 存储是一个集合,所以在类中声明一个集合,如链表,但是要注意集合名称要和配置中保持一致!!
③ 直接使用属性注入获取就行
19
20
21

3. 注意:value值加单双引号

  1. application.yml的键值对
    22

  2. 测试输出:
    在这里插入图片描述
    23

  3. 对双引号中的内容进行转义:
    25

  4. 小结:yml中单双引号问题:
    yml中如果使用了双引号就会按照(原)语义进行执行,如果不加单、双引号 or 加了单引号,那么就默认会将字符串中的特殊字符进行转义,比如\n -> \\n(转义处理)。


五、 补充拓展

  1. 如果想要了解更多Spring Boot的系统配置项,可以访问官网:系统配置项

  2. properties 和 yml面试题

① properties 是以 key=value 的形式配置的键值类型的配置⽂件(没有空格);⽽ yml 使⽤的是类似 json 格式的树形配置⽅式进⾏配置的,yml 层级之间使⽤换⾏缩进的⽅式配置,key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略
② properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题。 】
③ yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份配置⽂件作为 Java 和 Go 的共同配置⽂件。
④ yml ⽀持更多的数据类型

  1. Spring Boot读取配置文件的五种方法:
    Spring Boot读取配置文件

  2. 设置不同环境的配置⽂件:

1)创建不同环境的配置⽂件:
① 开发环境:application-dev.yml
② 生产环境:application-prod.yml

2)在 application.yml 中设置运⾏环境

# 去选择使用哪种环境(生产or开发)
spring:
  profiles:
    active: dev

小结

  1. 配置文件存储重要数据
  2. 配置文件格式:.properties、 .yml
  3. .properties配置:key=value
  4. .yml配置:key: value(注意空格)
  5. yml的优点
  6. yml中value的单双引号使用(双引号不转义)

yyy

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通。 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 项目简介 开发环境 * 操作系统:Windows 10 * 开发工具:Intellij IDEA * 数据库:MySQL 5.7.22 * Java SDK:Oracle JDK 1.8.0_131 部署环境 * 操作系统:Linux centos7 x64 * 虚拟化技术:VMware + Docker 项目管理工具 * 项目构建:Maven + Nexus * 代码管理:Git + GitLab * 镜像管理:Docker Registry 后台主要技术栈 * 核心框架:Spring Boot + Spring Cloud * 视图框架:Spring MVC * 页面引擎:Thymeleaf * ORM 框架:tk.mybatis 简化 MyBatis 开发 * 数据库连接池:Alibaba Druid * 数据库缓存:Redis Sentinel * 消息中间件:RabbitMQ (后期考虑加入) * 接口文档引擎:Swagger2 RESTful 风格 API 文档生成 * 全文检索引擎:ElasticSearch (后期考虑加入) * 分布式链路追踪:ZipKin * 分布式文件系统:Alibaba FastDFS * 分布式服务监控:Spring Boot Admin * 分布式协调系统:Spring Cloud Eureka * 分布式配置中心:Spring Cloud Config * 分布式日志系统:ELK(ElasticSearch + Logstash + Kibana)(后期考虑加入) * 反向代理负载均衡:Nginx * CDN服务器:基于Nginx搭建 前端主要技术栈 * 前端框架:Bootstrap + jQuery * 前端模板:AdminLTE 自动化运维 * 持续集成:GitLab * 持续交付:Jenkins (后期考虑加入) * 容器编排:Kubernetes 系统架构 ![image]( /image/system.png) 服务规划 # Cloud | 服务名称 | 服务端口 | 服务说明 | | --- | --- | --- | | itoken-eureka | 8761 | 服务注册与发现 | | itoken-config | 8888 | 分布式配置中心 | | itoken-zipkin | 9411 | 分布式链路追踪 | | itoken-zuul | 8768 | 分布式路由网关 | | itoken-admin | 8084 | 分布式系统监控 | # service | 服务名称 | 服务端口 | 服务说明 | | --- | --- | --- | |itoken-service-admin|8501|管理员服务提供者| |itoken-service-redis|8502|数据缓存服务提供者| |itoken-service-sso|8503|单点登录服务提供者| |itoken-service-posts|8504|文章服务提供者| |itoken-service-upload|8505|文件上传服务提供者| |itoken-service-digiccy|8506|数字货币服务提供者| |itoken-service-collection|8507|数据采集服务提供者| # web | 服务名称 | 服务端口 | 服务说明 | | --- | --- | --- | |itoken-web-admin|8601|管理员服务消费者| |itoken-web-posts|8602|文章服务消费者| |itoken-web-backend|8603|后台服务聚合| |itoken-web-digiccy|8604|数字货币服务消费者| 页面效果 # 管理员服务页面 ![image]( /image/main.jpg) # 文章服务页面 ![image]( /image/posts.jpg) # 交易所页面 ![image]( /image/digiccy.jpg)

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'Dream是普通小孩耶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值