Springboot的配置文件及其优先级

配置文件

内置配置文件

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;SpringBoot使用一个全局的配置文件,配置文件名是固定的:

  • application.properties
  • application.yml

以上两个任意一个都可以,也可以组合起来使用

  • 以前的配置文件:大多都使用的是 xxxx.xml文件;
  • YAML:以数据为中心,比json、xml等更适合做配置文件;

yml与properties的比较

application.properties与application.yml的比较
![[Pasted image 20240127193316.png]]

我们会发现properties文件如果是要配置同一层级下的属性需要把它的前缀全部写上,而yml文件则是跟文件的层级结构相似,而且分层清晰,所有我们一般选择使用yml文件。

优先级比较

虽然说application.yml与application.properties都是springboot的配置文件,但是他们也存在一个优先级:properties的优先级高于yml文件。
接下来就是验证这个优先级 :
首先给yml和properties文件设置不同的port,然后启动项目
![[Pasted image 20240313090655.png]]

项目启动之后,我们从日志中可以看到端口号时8081,时properties文件中配置的,因此验证了properties文件的优先级。
![[Pasted image 20240313090907.png]]

外置配置文件

首先,再我们的项目中我们导入了一个插件,可以将应用打包成一个可执行的jar包,无论在哪都可以使用java -jar进行运行。因此我们可以把打包好的jar包拿出来,放到一个文件夹中,然后去验证其外置的配置文件。
插件如下:
![[Pasted image 20240313091152.png]]

打包的时候我们先需要依次运行clean和package指令。
![[Pasted image 20240313091447.png]]

打包完成之后我们可以进入到项目对应的target文件夹下边,结构如下:
![[Pasted image 20240313091738.png]]

我们可以把jar包复制一份,然后放到一个新的文件夹中,并在文件夹中新建一个application.yml文件,重新制定port为8085,然后使用java -jar运行程序。
![[Pasted image 20240313091945.png]]

java -jar redisdemo-0.0.1-SNAPSHOT.jar

![[Pasted image 20240313092133.png]]

然后我们在当前目录下新建一个config文件,config文件中新建一个application.yml文件,并设置port为8090,然后再次启动项目,我们会发现端口号变成了8090。

因此我们得到一个优先级的比较:
外置的config中的配置文件>外置的配置文件>内置的application.properties>内置application.yml

springboot读取配置文件

我们也可以在配置文件中自定义属性的值,然后可以使用@Value来读取,例如:
在yml文件中添加:

api:
  name: zhangsan
  password: 123456

新建ConfigController文件:

package com.example.redisdemo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigController {
    // :后边的是默认值,如果找不到api.name就使用1,并且不会抛出异常
    @Value("${api.name:1}")
    private String name;
    @Value("${api.password:2}")
    private String password;

    @GetMapping("/config")
    public void config(){
        System.out.println(name);
        System.out.println(password);
    }
}

然后启动项目,访问config进行验证:
![[Pasted image 20240313093149.png]]

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

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

相关文章

【无标题】vmprotect net 混淆效果挺不错

vmprotect net 混淆效果挺不错,测试了一个,以前的写程序。用dnspy测试一下,效果非常好。 sunnf0451qq.com

string接口[小白理解篇]

作文目的 本文是为了加深对string底层函数的一点理解(请勿与底层源码混为一谈),下面从模拟与注意项出发。 一.string 功能化模拟 1.迭代器模拟 迭代器,为实现简单便理解故使用指针的方式(非说明迭代器使用该方法实现)。其中的begin、end都是为了给迭代…

【论文笔记合集】ARIMA 非平稳过程通过差分转化为平稳过程

本文作者: slience_me 文章目录 ARIMA 非平稳过程通过差分转化为平稳过程文章原文具体解释详解参照 ARIMA 非平稳过程通过差分转化为平稳过程 文章原文 Many time series forecasting methods start from the classic tools [38, 10]. ARIMA [7, 6] tackles the fo…

爬虫入门到精通_框架篇16(Scrapy框架基本使用)_名人名言的抓取

1 目标站点分析 抓取网站:http://quotes.toscrape.com/ 主要显示了一些名人名言,以及作者、标签等等信息: 点击next,page变为2: 2 流程框架 抓取第一页:请求第一页的URL并得到源代码,进行下…

避免阻塞主线程 —— Web Worker 示例项目

前期回顾 迄今为止易用 —— 的 “盲水印“ 实现方案-CSDN博客https://blog.csdn.net/m0_57904695/article/details/136720192?spm1001.2014.3001.5501 目录 CSDN 彩色之外 📝 前言 🚩 技术栈 🛠️ 功能 🤖 如何运行 ♻️ …

Linux 部署 Samba 服务

一、Ubuntu 部署 Samba 1、安装 Samba # 更新本地软件包列表 sudo apt update# 安装Samba sudo apt install samba# 查看版本 smbd --version2、创建共享文件夹,并配置 Samba 创建需要共享的文件夹,并赋予权限: sudo mkdir /home/test sud…

深度学习PyTorch 之 LSTM-中文多分类

LSTM 代码流程与RNN代码基本一致,只是这里做了几点优化 1、数据准备 数据从导入到分词,流程是一致的 # 加载数据 file_path ./data/news.csv data pd.read_csv(file_path)# 显示数据的前几行 data.head()# 划分数据集 X_train, X_test, y_train, y_…

【UE5】非持枪趴姿移动混合空间

项目资源文末百度网盘自取 创建角色在非持枪状态趴姿移动的动画混合空间 在BlendSpace文件夹中单击右键选择 动画(Animation) 中的混合空间(Blend Space) 选择SK_Female_Skeleton 命名为BS_NormaProne 打开BS_NormaProne 水平轴表示角色的方向,命名为Directi…

Vue2 父子组件某一属性的双向绑定

原本&#xff1a;父组件使用props传值给孩子组件初始化&#xff0c;触发事件子组件使用$emit传值给父组件&#xff0c;很麻烦后来&#xff1a;使用computed和$event例子代码&#xff1a; <template><div class"box">grandpa <el-input v-model"…

pta—剪切粘贴

使用计算机进行文本编辑时常见的功能是剪切功能&#xff08;快捷键&#xff1a;Ctrl X&#xff09;。请实现一个简单的具有剪切和粘贴功能的文本编辑工具。 工具需要完成一系列剪切后粘贴的操作&#xff0c;每次操作分为两步&#xff1a; 剪切&#xff1a;给定需操作的起始位置…

《深入解析 C#》—— C# 2 部分

文章目录 第二章 C# 22.1 泛型&#xff08;*&#xff09;2.2 default 和 typeof&#xff08;*&#xff09;2.3 可空值类型2.3.1 Nullable<T> 结构体&#xff08;framework 支持&#xff09;2.3.2 装箱&#xff08;CLR 支持&#xff09;2.3.3 “?”后缀&#xff08;语法支…

蓝桥杯(1):python排序

1 基础 1.1 输出 1.1.1 去掉输出的空格 print("Hello","World",123,sep"") print("hello",world,123,sep) print(hello,world,123) #输出结果 #HelloWorld123 #helloworld123 #hello world 123 1.1.2 以不同的方式结尾 print(&quo…

【Android】AOSP 架构

Android 官网对 AOSP 结构图进行了更新&#xff0c;如下所示&#xff1a; Android 应用&#xff08;Android Apps&#xff09; 完全使用 Android API 开发的应用。在某些情况下&#xff0c;设备制造商可能希望预安装 Android 应用以支持设备的核心功能。 特权应用&#xff08…

先验分布、后验分布、极大似然的一点思考

今天和组里同事聊天的时候&#xff0c;无意中提到了贝叶斯统计里先验分布、后验分布、以及极大似然估计这三个概念。同事专门研究如何利用条件概率做系统辨识的&#xff0c;给我画了一幅图印象非常深刻&#xff1a; 其中k表示时序关系。上面这个图表示后验分布是由先验分布与似…

怎样在CSDN赚点零花钱

请教一下各位大佬&#xff0c;看到你们在CSDN很多都几万粉丝以上&#xff0c;能不能分享一下有什么涨粉的经验&#xff0c;还有怎样转化为额外收益……感谢各位提供宝贵的经验&#xff0c;谢谢……

rviz上不显示机器人模型(模型只有白色)

文档中的是base_footprint&#xff0c;需要根据自己所设的坐标系更改&#xff0c;我的改为base_link 如何查看自己设的坐标系&#xff1a; 这些parent父坐标系就是 同时打开rviz后需要更改成base_link

Kubernetes operator系列:kubebuilder 实战演练 之 开发多版本CronJob

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Kubernetes operator学习 系列文章&#xff0c;本节会在上一篇开发的Cronjob基础上&#xff0c;进行 多版本Operator 开发的实战 本文的所有代码&#xff0c;都存储于github代码库&#xff1a;https://github.c…

几何相互作用GNN预测3D-PLA

预测PLA是药物发现中的核心问题。最近的进展显示了将ML应用于PLA预测的巨大潜力。然而,它们大多忽略了复合物的3D结构和蛋白质与配体之间的物理相互作用,而这对于理解结合机制至关重要。作者提出了一种结合3D结构和物理相互作用的几何相互作用图神经网络GIGN,用于预测蛋白质…

Android studio 性能调试

一、概述 Android studio 的Profiler可用来分析cpu和memory问题&#xff0c;下来进行说明介绍。 二、Android studio CPU调试 从开发模拟器或设备中启动应用程序&#xff1b; 在 Android Studio 中&#xff0c;通过选择View > Tool Windows > Profiler启动分析器。 应…

VMware workstation的安装

VMware workstation安装&#xff1a; 1.双击VMware-workstation-full-9.0.0-812388.exe 2.点击next进行安装 选择安装方式 Typical&#xff1a;典型安装 Custom&#xff1a;自定义安装 选择程序安装位置 点击change选择程序安装位置&#xff0c;然后点击next 选择是否自动…