SpringBoot 及 配置文件

news2025/7/10 0:50:40

一、什么是 SpringBoot?

Spring 是包含了众多工具的IoC容器,Spring Boot 是 Spring 的脚手架,是为了快速开发 Spring 而创建的一个框架。

二、Spring Boot 优点

  • 快速集成框架,Spring Boot 提供了启动添加依赖的功能,用于秒级集成各种框架。
  • 内置运行容器,无需配置 Tomcat 等 Web 容器,直接运行和部署程序。
  • 快速部署项目,无需外部容器即可启动并运行项目。
  • 可以完全抛弃繁琐的 XML,使用注解和配置的方式进行开发。
  • 支持更多的监控的指标,可以更好的了解项目的运行情况。

三、SpringBoot 工程目录

PS: 在 SpringBoot 项目中将 Bean 注册到容器中不在需要进行配置了。但所有你需要存放到容器里的类,必须要放到 启动类的同级目录中,或者放到启动类的子目录中。 (约定大于配置)

四、SpringBoot 配置文件

对于整个项目来说,配置文件是非常重要的,它里面通常保存了一些重要的数据,例如:

  • 数据库的连接信息(包含用户名和密码的设置);
  • 项目的启动端口;
  • 第三方系统的调用秘钥等信息;
  • 用于发现和定位问题的普通日志和异常日志等。

1、配置文件的格式

SpringBoot 的配置文件主要有两种格式:

  1. 后缀名为.properties
  2. 后缀名为.yml

配置文件中的配置项分为两类:

  1. 系统配置项。:点击这里查看官方文档
  2. 自定义配置项。

概要说明:

  1. .properties 类型的配置文件,是创建 Spring Boot 项目时默认的文件格式。
  2. 理论上讲,properties 可以和 yml 一起存在于一个项目当中,当 properties 和 yml ⼀起存在⼀个项目中时,如果配置文件中出现了同样的配置,那么这个时候会以 properties 中的配置为主,也就是 .properties 配置文件的优先级最高,但加载完 .properties 文件之后,也会加载 .yml 文件的配置信息
  3. 虽然 .properties 可以和 .yml 共存,但实际的业务当中,我们 通常会采取一种统一的配置文件格式,这样可以更好的维护(降低故障率)。

2、properties 配置文件

文件内容语法说明:properties 中的配置项是以键值的形式配置的,keyvalue 之间是以 “=” 连接的。

例子:设置配置项

# 配置项⽬端⼝号
server.port=8081
# 配置 JDBC
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dbname?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

例子:读取配置项

读取配置文件中的内容,可以使用 @Value 注解来实现。@Value 注解使用“${}”的格式读取。

@Controller
@ResponseBody
public class Test {
	// 读取配置项
    @Value("${server.port}")
    private String myConfig;
}

虽然 properties 的配置文件结构比较清晰,但是当配置注入 JDBC 时会出现很多的冗余信息,比如上述重复出现的 spring.datasource。想要解决这个问题,我们可以考虑使用 yml 格式的配置文件。

3、yml 配置文件

yml 全称 (Yet Another Markup Language)。yml 是树形结构的配置文件,它的 基础语法是“key: value”,注意 key 和 value 之间使用 英文冒汗加空格 的方式组成的,其中的空格不可省略。

例子:设置配置项

spring:
  datasource:
    url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8
    username: root
    password: 123456

和上面使用 properties 文件配置数据库连接进行对比可以发现,当前场景下,使用 yml 可以减少大量冗余信息。

例子:读取配置项

yml 中读取配置文件中的内容和 properties 相同,可以使用 @Value 注解来实现。@Value 注解使用“${}”的格式读取。

@Controller
@ResponseBody
public class Test {
	// 读取配置项
    @Value("${spring.datasource.url}")
    private String myConfig;
}

除了以上基础的功能外,在 yml 中还可以 配置对象:

stu:
  name: 张三
  password: 123456
  id: 123

使用 @ConfigurationProperties 读取对象

@Controller
@ConfigurationProperties("stu")
@Data
public class User {
    private String name;
    private String password;
    private int id;

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", id=" + id +
                '}';
    }
}

4、多环境配置文件

一般代码的运行环境主要为以下三种:

  1. 本地开发环境
  2. 测试环境
  3. 生产环境

为了满足多个环境下的配置需求,可以创建多个用于不同环境的配置文件:

  1. application.properties:默认的配置文件,包含共享的属性。
  2. application-dev.properties:开发环境的配置文件
  3. application-test.properties:测试环境的配置文件
  4. application-prod.properties:生产环境的配置文件

我们可以通过在 application.properties 配置文件中指定运行环境的配置文件:

PS: 在 Spring 中,配置文件的命名约定是基于 application-{profile}.propertiesapplication-{profile}.yml 的格式,其中 {profile} 是 spring.profiles.active 属性的值。

# 指定开发环境
spring.profiles.active=dev

5、properties 和 yml 区别

  1. properties 是以 key=value 的形式配置的键值类型的配置文件,而 yml 使用的是类似 json 格式的树形 配置方式进行配置的,yml 层级之间使用换行缩进的方式配置,key 和 value 之间使用“: ”英文冒号加空格的方式设置,并且空格不可省略。
  2. properties 为早期并且 默认的配置文件格式,但其配置存在⼀定的冗余数据,使用 yml 可以很好的解决数据冗余的问题。
  3. yml 通用性更好,支持更多语言,如 Java、Go、Python 等
  4. yml 支持更多的数据类型。如对象、集合等。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos7安装oxidized备份软件

首先需要提前下载ruby,因为默认yum安装的版本太低 https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.0.tar.gz 1、yum remove ruby ruby-devel(有就卸载,没有则忽略) 2、将下载好的ruby包解压到/opt下 [rootoxidized ruby-…

Cesium:CGCS2000坐标系的xyz坐标转换成WGS84坐标系的经纬高度,再转换到笛卡尔坐标系的xyz坐标

作者:CSDN @ _乐多_ 本文将介绍使用 Vue 、cesium、proj4 框架,实现将CGCS2000坐标系的xyz坐标转换成WGS84坐标系的经纬高度,再将WGS84坐标系的经纬高度转换到笛卡尔坐标系的xyz坐标的代码。并将输入和输出使用 Vue 前端框架展示了出来。代码即插即用。 网页效果如下图所示…

Boris FX Silhouette 2023.0.3(影视后期)

Silhouette mac是一种视觉表现形式,通常用于描绘物体或人物的轮廓。它可以通过填充与背景形成鲜明的对比,从而使轮廓更加清晰明了。Silhouette 是一种简约而又具有艺术感的表现方式,常用于绘画、摄影和设计领域。 在绘画中,Silho…

springboot之拦截器、servlet过滤器

一 使用maven新建Spring Boot项目 1. File --> New --> Project... --> Maven ,如下图所示 Project SDK下拉列表框中选择前面安装的 Java1.8,如果下拉列表框中不存在Java 1.8,可以单击New按钮,找到安装Java的位置&…

第22期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练 Transformer(GPT)、人工智能生成内容(AIGC)以及大型语言模型(LLM)等安全领域应用的知识。在这里,您可以…

激光雷达标定板提高自主驾驶功能的感知精度

激光雷达(LiDAR)是一种通过发射激光束并测量反射回来的时间来测量目标距离和形状的传感器。为了提高激光雷达的感知精度和稳定性,需要进行激光雷达标定,以确定其激光束的准确性和稳定性。 如果没有激光雷达,自动驾驶的…

MW98 DM蓝牙5.2双模热插拔PCB

键盘使用说明索引(均为出厂默认值) 软件支持(驱动的详细使用帮助)一些常见问题解答(FAQ)首次使用步骤蓝牙配对规则(重要)蓝牙和USB切换键盘默认层默认触发层0的FN键配置的功能默认功…

transformers-Generation with LLMs

https://huggingface.co/docs/transformers/main/en/llm_tutorialhttps://huggingface.co/docs/transformers/main/en/llm_tutorial停止条件是由模型决定的,模型应该能够学习何时输出一个序列结束(EOS)标记。如果不是这种情况,则在…

天软特色因子看板(2023.10 第14期)

该因子看板跟踪天软特色因子A05005(近一月单笔流通金额占比(%),该因子为近一个月单笔流通金额占比因子,用以刻画股票在收盘时,主力资金在总交易金额中所占的比重。 今日为该因子跟踪第14期,跟踪其在SW801160 (申万公用事业) 中的表…

go-gin-vue3-elementPlus带参手动上传文件

文章目录 一. 总体代码流程1.1 全局Axios部分样例1.2 上传业务 二. 后端部分三. 测试样例 go的mvc层使用gin框架. 总的来说gin的formFile封装的不如springboot的好.获取值有很多的坑. 当然使用axios的formData也有不少坑.现给出较好的解决办法 以下部分仅贴出关键代码 一. 总…

阅读PDF文档优选操作

这样就是左侧标题 右侧单页文章内容

4G物联模组产品

4G物联模组产品 文章目录 4G物联模组产品1.功能2.优势3.规格参数3.1.额定最大值3.2.尺寸规格 4.内部实物图5.产品功能说明5.1.通信功能5.2.GPS定位5.3.充放电管理5.4.告警和保护5.5.软件升级5.6.软件调测 6.通信协议6.1流程6.2.消息定义6.2.1.应用下发到云6.2.2.云下发到设备6.…

量化交易-应对市场闪崩

金融交易世界虽然提供了无与伦比的机会,但也并非没有陷阱。其中一个陷阱是闪崩现象,尤其是在算法交易领域。这些快速且常常无法解释的市场下跌可能会在几分钟内消除数十亿美元的价值。了解它们的起源、影响和预防策略对于参与算法交易的任何人都至关重要。本文深入研究了闪存…

0基础学习PyFlink——事件时间和运行时间的窗口

大纲 定制策略运行策略Reduce完整代码滑动窗口案例参考资料 在 《0基础学习PyFlink——时间滚动窗口(Tumbling Time Windows)》一文中,我们使用的是运行时间(Tumbling ProcessingTimeWindows)作为窗口的参考时间: reducedkeyed.window(TumblingProcess…

通过Xpath解析尝试多种方法提取文本

from lxml import etree# XML文档内容 xml_data <root><element attribute"value1">Text 1</element><element attribute"value2">Text 2</element><element attribute"value3">Text 3</element> &…

文件批量改名:字母随机重命名文件,高效又轻松

在日常工作中&#xff0c;我们经常需要处理大量的文件&#xff0c;其中最繁琐的任务之一就是给文件重命名。如果手动一个一个地重命名&#xff0c;不仅耗时而且容易出错。为了解决这个问题&#xff0c;我们可以使用云炫文件管理器批量改名&#xff0c;用字母随机重命名文件&…

猪八戒、程序员客栈、码市哪个更好用?

最近有很多程序员伙伴在用接单平台线上兼职&#xff0c;问题也来了&#xff1a;到底哪个更好用嘞? 选取了几个问的比较多的&#xff1a;猪八戒、程序员客栈、码市。进行了一下简单的比较。 优点: 猪八戒 第一&#xff0c;猪八戒的名气是毋庸置疑的。无论是它成立至今的时间…

【移远QuecPython】EC800M物联网开发板的GPIO流水灯配置

【移远QuecPython】EC800M物联网开发板的GPIO流水灯配置 文章目录 GPIO初始化GPIO配置GPIO流水灯附录&#xff1a;列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 GPIO初始化 GPIO库&#xff1a; from machine import Pin初始化函数&#xff1a; class mac…

数据结构笔记(一)绪论

&#x1f600;前言 本人是根据bi站王卓老师视频学习并且做了相关笔记希望可以帮助到大家 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&a…

PHP 人才招聘管理系统mysql数据库web结构layUI布局apache计算机软件工程网页wamp

一、源码特点 PHP 人才招聘管理系统是一套完善的web设计系统 layUI技术布局 &#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 php人才招聘管理系统 代码 https://download.csdn.net/download/qq_4…