【JavaEE】Spring Boot - 配置文件

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

在这里插入图片描述

文章目录

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

例如:

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 注释

# 井号代表注释~

在这里插入图片描述

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

  • 这个时候就需要去设置,改动编码格式都为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格式的文件)

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

在这里插入图片描述

效果:
在这里插入图片描述


文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/69329.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT访问流量下降的原因分析

​自从OpenAI的ChatGPT于11月问世以来&#xff0c;这款聪明的人工智能聊天机器人就席卷了全世界&#xff0c;人们在试用该工具的同时也好奇该技术到底将如何改变我们的工作和生活。 但近期Similarweb表示&#xff0c;自去ChatGPT上线以来&#xff0c;该网站的访问量首次出现下…

面试热题(路径总和II)

给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 在这里给大家提供两种方法进行思考&#xff0c;第一种方法是递归&#xff0c;第二种方式使用回溯的方式进行爆…

Linux文件属性与权限管理(可读、可写、可执行)

Linux把所有文件和设备都当作文件来管理&#xff0c;这些文件都在根目录下&#xff0c;同时Linux中的文件名区分大小写。 一、文件属性 使用ls -l命令查看文件详情&#xff1a; 1、每行代表一个文件&#xff0c;每行的第一个字符代表文件类型&#xff0c;linux文件类型包括&am…

Javascript 正则

基本语法 定义 JavaScript种正则表达式有两种定义方式 构造函数 var regnew RegExp(<%[^%>]%>,g);字面量 var reg/<%[^%>]%>/g;g&#xff1a; global&#xff0c;全文搜索&#xff0c;默认搜索到第一个结果接停止i&#xff1a;ingore case&#xff0c;忽略…

小程序如何设置电子票

电子票是一种方便快捷的票务管理方式&#xff0c;可以帮助商家实现电子化的票务管理&#xff0c;提升用户体验。下面介绍&#xff1a;如何在小程序内&#xff0c;设置电子票以及用电子票购买商品。 1. 设置电子票套餐。可以新建一个商品&#xff0c;商品标题写&#xff1a;XX电…

UDP通信实验、广播与组播、本地套接字

文章目录 流程函数应用广播应用 组播&#xff08;多播&#xff09;本地套接字应用 流程 函数 返回值&#xff1a; 成功&#xff0c;返回成功发送的数据长度 失败&#xff0c;-1 返回值&#xff1a; 成功&#xff0c;返回成功接收数据长度 失败&#xff0c;-1 应用 广播 应用 …

android APP内存优化

Android为每个应用分配多少内存 Android出厂后&#xff0c;java虚拟机对单个应用的最大内存分配就确定下来了&#xff0c;超出这个值就会OOM。这个属性值是定义在/system/build.prop文件中. 例如&#xff0c;如下参数 dalvik.vm.heapstartsize8m #起始分配内存 dalvik.vm.…

搭建servlet服务

目录 servlet的生命周期 配置tomcat环境 创建web后端项目 配置web.xml http请求 get和post 其他请求 http响应 Servlet是Server Applet的简称&#xff0c;意思为用Java编写的服务器端的程序&#xff0c;它运行在web服务器中&#xff0c;web服务器负责Servlet和客户的通…

5.利用matlab完成 符号矩阵的转置和 符号方阵的幂运算(matlab程序)

1.简述 Matlab符号运算中的矩阵转置 转置向量或矩阵 B A. B transpose(A) 说明 B A. 返回 A 的非共轭转置&#xff0c;即每个元素的行和列索引都会互换。如果 A 包含复数元素&#xff0c;则 A. 不会影响虚部符号。例如&#xff0c;如果 A(3,2) 是 12i 且 B A.&#xff0…

【PDF密码】PDF文件不能打印,为什么?

正常的PDF文件是可以打印的&#xff0c;如果PDF文件打开之后发现文件不能打印&#xff0c;我们需要先查看一下自己的打印机是否能够正常运行&#xff0c;如果打印机是正常的&#xff0c;我们再查看一下&#xff0c;文件中的打印功能按钮是否是灰色的状态。 如果PDF中的大多数功…

谷粒商城第十天-获取分类属性分组(前端组件抽取父子组件交互)

目录 一、总述 1.1 前端思路 1.2 后端思路 二、前端部分 2.1 将分类树前端代码抽取成一个组件 2.2 使用elementUI的组件实现左右组件功能 2.3 使用事件机制进行组件通信 三、后端部分 四、总结 一、总述 说一下今天需要实现一个什么样子的功能&#xff1a; 很简单&am…

数据结构(c++语言版) 邓俊辉 第五章:二叉树学习笔记

5.1二叉树及其表示 树是由节点和边组成的。 1.有根树 树是由顶点(vertex)和边(edge)组成。树的每个顶点也叫节点(node)。 2.深度与层次 由树的连通性&#xff0c;每一节点与根都有一条路径相连&#xff1a;根据树的无环性&#xff0c;由根通往每个节点的路径必然唯一。 节点v…

数据结构——双向链表

双向链表实质上是在单向链表的基础上加上了一个指针指向后面地址 单向链表请参考http://t.csdn.cn/3Gxk9 物理结构 首先我们看一下两种链表的物理结构 我们可以看到&#xff1a;双向在单向基础上加入了一个指向上一个地址的指针&#xff0c;如此操作我们便可以向数组一样操作…

STM32 4G学习

硬件连接 ATK-IDM750C模块可直接与正点原子 MiniSTM32F103开发板板载的ATK模块接口&#xff08;ATK-MODULE&#xff09;进行连接。 功能说明 ATK-IDM750C是正点原子&#xff08;ALIENTEK&#xff09;团队开发的一款高性能4G Cat1 DTU产品&#xff0c;支持移动4G、联通4G和…

健启星|医学营养的市场先行者

随着《“健康中国2030”规划纲要》、《国民营养计划&#xff08;2017-2030年&#xff09;》等政策的陆续发布&#xff0c;标志着以传统药物治疗为中心的医疗模式时代正式转型到以预防和康复为中心的新的医学营养时代。在此背景下&#xff0c;符合时代需求的特医食品成为“医学营…

vxe table: 实现tree表格,并且自定义展示指定行

要求&#xff0c;数据中必须有唯一的id字段&#xff0c;并且row-config.KeyField 要指定这个id字段。否则在自定义展开行时展开不生效。并不影响tree的渲染 数据有两种形式 普通数据结构tree 状结构&#xff0c; 以树状结构为例: 首先我们要将普通结构的数据&#xff0c;按…

JMeter 的并发设置教程

JMeter 是一个功能强大的性能测试工具&#xff0c;可以模拟许多用户同时访问应用程序的情况。在使用 JMeter 进行性能测试时&#xff0c;设置并发是非常重要的。本文将介绍如何在 JMeter 中设置并发和查看报告。 设置并发 并发是在线程组下的线程属性中设置的。 线程数&#…

CentOS 7 构建 LVS-DR 群集 nginx负载均衡

1、基于 CentOS 7 构建 LVS-DR 群集。 DS&#xff08;Director Server&#xff09;&#xff1a;DIP 192.168.231.132 & VIP 192.168.231.200 [root132 ~]# nmcli c show NAME UUID TYPE DEVICE ens33 c89f4a1a-d61b-4f24-a260…

实现Jenkins自动发包配置

参考抖音&#xff1a;Java不良人 其中的视频演示代码 不推荐把jenkins端口一直开放&#xff0c;推荐使用时候放开&#xff08;版本不太新&#xff0c;避免漏洞攻击&#xff09; [rootVM-4-12-centos soft]# docker-compose -v Docker Compose version v2.19.1docker-compose.…

零基础看懂免费开源的Stable Diffusion

文章目录 前言Diffusion模型推理过程训练过程 Stable Diffusion模型参考 前言 前面一篇文章主要讲了扩散模型的理论基础&#xff0c;还没看过上篇的小伙伴可以点击查看&#xff1a;DDPM理论基础。这篇我们主要讲一下一经推出&#xff0c;就火爆全网的Stable Diffusion模型。St…