【JavaEE】Spring Boot - 配置文件

【JavaEE】Spring Boot 开发要点总结(2)

文章目录

  • [【JavaEE】Spring Boot 开发要点总结(2)](#【JavaEE】Spring Boot 开发要点总结(2))
    • [1. 配置文件的两种格式](#1. 配置文件的两种格式)
    • [2. .properties 文件](#2. .properties 文件)
      • [2.1 基本语法](#2.1 基本语法)
      • [2.2 注释](#2.2 注释)
      • [2.3 配置项](#2.3 配置项)
      • [2.4 主动读取配置文件的键值](#2.4 主动读取配置文件的键值)
      • [2.5 数据库的连接时的需要的信息配置](#2.5 数据库的连接时的需要的信息配置)
    • [3. .yml文件](#3. .yml文件)
      • [3.1 .yml文件的优缺点](#3.1 .yml文件的优缺点)
      • [3.2 自定义对象](#3.2 自定义对象)
      • [3.3 自定义对象的获取](#3.3 自定义对象的获取)
      • [3.4 配置集合(简单的String类型集合)](#3.4 配置集合(简单的String类型集合))
    • [4. 其他配置项](#4. 其他配置项)
    • [5 properties 和 yml的区别](#5 properties 和 yml的区别)
    • [6 补充](#6 补充)
      • [6.1 命名](#6.1 命名)
      • [6.2 指定配置文件](#6.2 指定配置文件)

【JavaEE】Spring Boot 开发要点总结(2)

所有重要和必要的数据都是在配置文件中配置的

  • 简洁明了,干净利落,修改方便,相比于xml,更有代码的感觉,功能用处也更多更被重视

例如:

  1. 数据库的连接时的需要的信息配置(用户名,url,密码)
  2. 项目的启动端口是什么(server.port)
  3. 第三方系统的调用密钥信息
  4. 用于发现和定位问题的普通日志和异常日志等~

没有配置文件,就无法连接数据库,甚至不能保存日志!

1. 配置文件的两种格式

配置文件的类型有两种:

  1. .properties
  2. .yml
    • .yaml 也一样
    • 这个yaml跟yml是一样的,后面不做演示

两种最主要的区别就是,格式不同,且对于重复的设置,properties的优先级更高~

  1. propertise
  1. yml

结果:

虽然这两种文件可以共存,但是在实际开发的时候,通常是统一一种配置文件的~

2. .properties 文件

.properties配置文件是最早期的格式,为项目的默认配置文件

而这种写法相对于比较正式,不易出错,整齐全面,适合初学者

  • 之后我们自己的项目,我们写的就是这种 ~

2.1 基本语法

  1. .properties 配置文件是以键值对形式配置的: key=value
  2. .properties,一行一条语句

例如:

properties 复制代码
server.port=8080
spring.datasource.url=jdbc:mysql:127//127.0.0.1:3306/testdb?charsetEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456

. 代表着层级关系,"的":X.Y => X里面的Y,对象的用法去联想也可以~

2.2 注释

properties 复制代码
# 井号代表注释~

重新启动后,(保存后显示)就会发现注释乱码的问题~

  • 这个时候就需要去设置,改动编码格式都为UTF-8
  • 当然,原本的乱码还会保留,因为已经不可逆了,乱了保存后谁都不认识

2.3 配置项

配置文件的配置类型分两种:

  1. 系统配置项
    • 例如:server.port
  2. 用户自定义配置项
    • 想写啥写啥都ok,例如:mine.name=大帅哥
    • 命名参考变量命名~

对于系统配置项,就是给系统用的,系统在启动的时候会自动获取,然后设置到一些必要的地方,例如端口号...

而对于用户自定义的配置项,则是用户保存的一些键值对罢了,系统不会用到,是用户主动去读取的

  • 当然,系统配置项,也可以被主动读到~

2.4 主动读取配置文件的键值

一样的,在JavaEE进阶,遍地是注解,而这里,仍然有注解可以解决我们的问题~

  • 来自【Spring框架】的@Value 注解

现在开始的注解,大部分都是"属性注入"的思想,适当联系之前的DI~

  • 对于Bean对象的具体应用细节,后续讲解,这里并不是重点
  • 猜测含义就是,将key为"mine.name",注入到字符串name中
  • 并在访问sayHi方法时返回~

返回了key值~

  • 这种写法跟没写一样~

正确的写法应该是:"${XXX.YYY}"

效果:

补充:

  1. 在注入的时候,如果是整数或者浮点型或者布尔类型,则支持字符串转化~
    • 只要不要"fan_jian"的去写,就不会有时,否则直接抛异常
    • 参考平时写代码的赋值操作

效果:

  1. 找不到的时候,会抛异常
  1. 习惯:在注释内部的字符串最好不要使用小驼峰,而是下划线

2.5 数据库的连接时的需要的信息配置

可见写起来比较麻烦

  • 但是这是必须的,因为不止 spring有 datasource,不止 datasource有 url...

  • 至于配置后的细节知识 以及如何操作数据库呢,这是后续的内容,非本文重点~

.properties文件的

  • 优点就是:陈列清晰

  • 缺点就是:写法臃肿

3. .yml文件

3.1 .yml文件的优缺点

优点就是:写法归纳性强,从简,可读性高

缺点:初学者容易犯错, 规矩多~

注意:

  • 同一层的内容,必须写在一起,归纳在一起(这是规矩)

将.properties的内容转化过来:

  • 其实也不是很难理解,这样的层级结构就更加鲜明了我觉得~
  • 注意:原本的key=value对应到这里就是,key: value冒号后面的空格不可缺少

效果:

其他的优点:

  1. 支持更多的数据类型,它可以简单表达清单(数组),散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或者编辑数据结构、各种配置文件等
    • properties也差不多吧,只是没有明说,官方夸的天花乱坠~
  2. yml 支持/面向 更多的编程语言,或者说更多的编程语言认可yml
    • 它不止是 Java中可以使用,在 Golang、高版本的 PHP、Python、Ruby、JS、Perl...中也都可以使用
    • ++这样,在开发的时候,不同语言的工程师,也可以用统一的配置文件去设置一些共同配置和共同自定义数据++
    • 最有价值的优点,不过现在用不着~

3.2 自定义对象

其实这就是一个对象,yml有明说~

properties的这个,也是个对象,没有明说~

创建一个实体类:

3.3 自定义对象的获取

通过Bean的存储和注入的方式:

  1. 启动的时候,系统识别配置文件,把配置信息赋值给Bean对象
  2. 通过属性注入给成员

识别配置文件,赋值给Bean的方法:

  • 没错还是注解

属性注入:

效果:

  • 属性名必须跟设置是一样的,否则就是
    1. 多了白多了,没有影响
    2. 少了就少了,显示原有值

效果:

  • 不要去把配置文件中的配置改为小驼峰,因为通过注入的时候,配置文件的 key看成全小写,那么原本的属性名就对应不上
    • 这也是前面不写小驼峰的原因之一
  • 导致 isBro 一直是 false

对于properties文件,效果也一样:

3.4 配置集合(简单的String类型集合)

  • 冒号空格别忘了,否则会被认为是字符串的一部分~

这个list也可以看成,db_type对象的一个属性

定义对象的时候,对象名不能用下划线,可以用减号,但是属性名可以:

所以获取这个自定义数据的方式跟上面一样:

效果:

对于,List<Integer> 等等,那么就要保证每个值都严格对应得上,才不会报错!

4. 其他配置项

可以参考官方文档:

Common Application Properties (spring.io)

  • 需要用到的时候去搜即可!

5 properties 和 yml的区别

  1. 语法不同
    • properties : key=value
    • yml : key: value
  2. 诞生时机不同
    • properties是 Java早期的配置文件格式
    • yml不是Java独创的,而是Java兼容yml,yml支持Java
  3. yml很好的解决数据冗余的问题
  4. yml通用性比较高
  5. yml支持更多的数据类型

6 补充

6.1 命名

配置文件的标准名是:application-xxx,从图标就可以看出异端:

这就是spring的约定,要遵循!

我们有时候开发,要针对不同代码开发环境将配置文件分类

  1. 本地开发环境:application-dev.yml
  2. 测试环境:application-test.yml
  3. 生产环境:application-prod.yml

6.2 指定配置文件

指定配置文件扫描(非系统配置文件 application.yml/application.properties):

  • 但是这只是提供一个额外的配置文件,优先级不如系统配置文件
  • 这种方式对于普通的properties/yml文件,都适用(包括spring不认可的非application-xxx格式的文件)

另一种方式:对接环境对应的配置环境

在系统配置文件中去设置:

yaml 复制代码
spring:
	profiles:
		active: xxx
		# xxx 代表开发环境配置文件格式 application-xxx 的 xxx
  • 可见,这种方式就仅仅针对Spring约定的配置文件~

含义就是,系统配置文件附带这个配置文件(或者说是接上了这个配置文件)

  • 理论上,一次运行只会用到一种开发环境
  • 所以在代码约定上其实系统配置文件只能附带一个自己的配置文件

效果:


文章到此结束!谢谢观看

可以叫我 小马 ,我可能写的不好或者有错误,但是一起加油鸭🦆

本文代码位置:spring_boot_demo1 · 游离态/马拉圈2023年8月 - 码云 - 开源中国 (gitee.com)


相关推荐
郑祎亦31 分钟前
Spring Boot 项目 myblog 整理
spring boot·后端·java-ee·maven·mybatis
计算机毕设指导62 小时前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
paopaokaka_luck2 小时前
[371]基于springboot的高校实习管理系统
java·spring boot·后端
捂月3 小时前
Spring Boot 深度解析:快速构建高效、现代化的 Web 应用程序
前端·spring boot·后端
王小小鸭4 小时前
【开发小技巧11】用经典报表实现badge list效果,根据回显内容用颜色加以区分
oracle·oracle apex
大白要努力!4 小时前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
FIN技术铺5 小时前
Spring Boot框架Starter组件整理
java·spring boot·后端
小码的头发丝、6 小时前
Spring Boot 注解
java·spring boot
午觉千万别睡过6 小时前
RuoYI分页不准确问题解决
spring boot
2301_811274316 小时前
大数据基于Spring Boot的化妆品推荐系统的设计与实现
大数据·spring boot·后端