JavaEE >> Spring Boot(2)

Spring Boot 配置文件

前面的文章已经介绍了 Spring Boot 项目的创建,上文,本文介绍 Spring Boot 的简单进阶使用。

配置文件的作用

项目中的所有重要数据都是在配置文件中配置的,例如:

  1. 数据库的连接信息(包括数据库的密码和用户名以及一些参数的设置);
  2. 项目的启动端口,比如想要以 8081 作为端口运行项目;
  3. 一些第三方的系统调用信息;
  4. ⽤于发现和定位问题的普通⽇志和异常⽇志等;

配置文件的格式

有两种

  1. .properties:以键值对的形式配置,key 和 value 之间是以“=”连接;
  2. .yml:语法和 JSON 语⾔类似,写法简单,可读性高;

下面通过举例来进行具体说明。

  1. 在这里插入图片描述
  2. 在这里插入图片描述

注意:

项目中两种形式可以共同存在,但 .properties 的优先级更高,即出现相同配置的话,例如配置端口号,会以 .properties 配置的端口号为准。加载完 .properties 配置文件后也会加载 .yml 配置文件。
实际业务中会采取一种统一的配置文件格式,这样一来可以更好的维护以及开发。

.properties

Spring Boot 项目创建完成后,会自动在 resources 包下面加载。
下面进行配置:

在这里插入图片描述

spring.application.name=demo
# 配置项目端口号
server.port=8080
# 连接数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding= utf8
spring.datasource.username=root
spring.datasource.password=z0329

上述用 .properties 格式配置数据库、端口号,使得该项目可以与数据库进行关联,对其进行操作。
除上述配置外,还可以根据业务配置其它相关项。

读取配置文件

在项目中,还提供了读取配置文件内容的注解(@Value 注解)
使用方法如下:

@RestController
@RequestMapping("/t")
public class TestController {@Value("${server.port}")private String port;@PostConstruct // @PostConstruct注解的方法将会在依赖注入完成后被自动调用. @PostConstruct修饰的方法只会被服务器执行一次public void postConstruct(){System.out.println("读取配置文件中的端口号: " + port);}}

结果如下:
在这里插入图片描述

注意:
在这里插入图片描述

.yml

yml 是树形结构的配置⽂件,语法是“key: value”注意 key 和 value 之间使⽤英⽂冒号加空格的⽅式组成的,其中的空格不可省略。
用法如下:

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/jdbc?characterEncoding=utf8username: rootpassword: z0329server:port: 8088

yml 读取配置文件的方法也是通过使用 @Value 注解,与上述.properties 一样,结果如下:

在这里插入图片描述

当两个配置文件同时存在时:

在这里插入图片描述
端口号就是以 .properties 配置文件为准,其优先级更高。

value 值加单双引号区别

在 yml 中定义三个个字符串,如下:

在这里插入图片描述

编写测试类:

/*** Created with IntelliJ IDEA.* Description: 用于测试 @Value 注解* 作用:读取配置文件中的内容*/
@RestController
@RequestMapping("/t")
public class TestController {@Value("${server.port}")private String port;@PostConstruct // @PostConstruct注解的方法将会在依赖注入完成后被自动调用. @PostConstruct修饰的方法只会被服务器执行一次public void postConstruct(){System.out.println("读取配置文件中的端口号: " + port);}}

结果如下:
在这里插入图片描述
结论:

  • 默认为字符串,不用加上单/双引号;
  • 单引号会转义特殊字符,将特殊字符转义成一个普通的字符串;
  • 双引号不会转义特殊字符,即特殊字符会作为本身进行输出

.properties 与 .yml

  1. properties 是以 key=value 形式配置的键值类型的配置⽂件, yml 使⽤的是类似 json 格式的树形配置⽅式进⾏配置.
  2. properties 配置文件内容较为冗余,例如连接数据库信息,都会以 spring.datasource 开头,而 yml 则不会,写法更简单,可读性高
  3. yml 支持更多的数据类型、通用性更好,支持多种语言。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker与Linux容器:“探索容器化技术的奥秘”

目录 一、Docker概述 二、容器技术的起源: 三、Linux容器 四、Docker的出现 五、Docker容器特点: 六、Docker三大概念: 容器: 镜像: 仓库: 七、Docker容器常用命令 一、Docker概述 在云原生时代&…

北京车展创新纷呈,移远通信网联赋能

时隔四年,备受瞩目的2024(第十八届)北京国际汽车展览会于4月25日盛大开幕。在这场汽车行业盛会上,各大主流车企竞相炫技,众多全球首发车、概念车、新能源车在这里汇聚,深刻揭示了汽车产业的最新成果和发展潮…

[docker] 多容器项目 - PHP+MySQL+Nginx+utility containers

[docker] 多容器项目 - PHPMySQLNginxutility containers 这个项目总共会配置 6 个容器,主要还是学习一下 docker 的使用和配置,目标是: 本机不安装 PHP、Nginx 安装部分全都交给 docker 容器实现 可以运行一个 Laravel 网页项目 修改本机…

(MSFT.O)微软2024财年Q3营收619亿美元

在科技的浩渺宇宙中,一颗璀璨星辰再度闪耀其光芒——(MSFT.O)微软公司于2024财政年度第三季展现出惊人的财务表现,实现总营业收入达到令人咋舌的6190亿美元。这一辉煌成就不仅突显了微软作为全球技术领导者之一的地位,更引发了业界内外对这家…

Spark-机器学习(5)分类学习之朴素贝叶斯算法

在之前的文章中,我们学习了回归中的逻辑回归,并带来简单案例,学习用法,并带来了简单案例。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵…

如何实现直播声卡反向给手机充电功能呢?

在数字化时代的浪潮中,声卡作为多媒体系统的核心组件,扮演着声波与数字信号相互转换的关键角色。它不仅能够将来自各类音源的原始声音信号转换为数字信号,进而输出到各类声响设备,更能够通过音乐设备数字接口(MIDI)发出合成乐器的…

单片机为什么有多组VDD?

以前我在画尺寸小的PCB时,比较头痛,特别是芯片引脚又多的,芯片底下,又不能打太多过孔。 可能有些老铁也比较好奇,为什么一个单片机芯片,有这么多组VDD和VSS。 比如下面这个100个引脚的STM32单片机。 有5组…

场景文本检测识别学习 day07(BERT论文精读)

BERT 在CV领域,可以通过训练一个大的CNN模型作为预训练模型,来帮助其他任务提高各自模型的性能,但是在NLP领域,没有这样的模型,而BERT的提出,解决了这个问题BERT和GPT、ELMO的区别: BERT是用来…

曲线「三分」

明明做作业的时候遇到了 n 个二次函数Si(x)ax^2bxc ,他突发奇想设计了一个新的函数F(x)max{Si(x)},i1,2……n 。 明明现在想求这个函数在 的最小值,要求精确到小数点后四位,四舍五入。 输入格式 输入包含 T组数据,每组第一行一…

网络安全培训对软件开发人员的重要性

微信搜索关注:网络研究观 阅读获取更多信息。 组织所经历的持续不断的网络威胁没有任何放缓的迹象,使得实现有效安全的任务变得越来越具有挑战性。 根据最新的 Verizon 数据泄露调查报告,2023 年高级攻击增加了 200% 以上。 IBM 数据泄露成…

maven-idea新建和导入项目

全局配置 新建项目 需要新建的文件夹 src/testsrc/test/javasrc/main/java 注:1、新建Java-class,输入.com.hello.hellomaven 2、快捷键psvm显示 public static void main(String[] args) {.... } package com.hello;public class hellomaven {publ…

Unity 使用GPU计算物体距离

在游戏开发中,计算物体之间的距离是一个常见的需求,例如用于碰撞检测、视觉效果等。传统的计算方法可能会在大量物体时带来性能问题,而在 Unity 中,借助 GPU 进行计算可以有效提高性能。本文将介绍一种使用 Compute Shader 在 Uni…