18、springboot默认的配置文件及导入额外配置文件

news2024/11/21 0:34:54

springboot默认的配置文件及导入额外配置文件

★ Spring Boot默认加载的配置文件:

 (1) 类加载路径(resources目录)application.properties|yml  (相当于JAR包内)
 optional: classpath:/
(2)类加载路径下的/config包(resources/config)。 (相当于JAR包内)
 optional: classpath:/config/

 【备注】:上面类加载路径及载路径下config子目录,当应用被打包后,它们就被打包到了JAR包中。
(3)当前路径。(相当于JAR包外)
     c:\abc\xyz> java -jar test.jar(Spring Boot应用)

 optional: file:./
     ——执行该java命令所在的目录(c:\abc\xyz)下的application.properties|yml
(4)当前路径下的/config子目录。(相当于JAR包外)
 optional: file:./config/

(5)当前路径下的/config子目录的任意直接子目录,也就是/config/abc/、/config/xyz/等,不能是/config/abc/def/。
    (相当于JAR包外),实际上就是optional:file:./config/*/ 


 3个要点:

 1. 运行Spring Boot应用的当前目录下的配置文件会覆盖JAR包中原有的配置文件
    ——方便部署人员去添加自己的配置文件来覆盖Spring Boot应用中原有的配置。

 2. 无论是类加载路径中(JAR包),还是当前目录下(JAR包外),
    config子目录下配置文件总会被自动加载,而且优先级更高。

 3. 当前目录下,config的直接子目录下(config/abc、config/xyz)的配置文件的优先级是最高的。

★ 设置Spring Boot默认加载的配置文件:

可通过如下系统属性(或环境变量、或命令行参数)来改变配置文件的位置:

▲ spring.config.name:改变配置文件的文件名,默认值是application。
     如果用OS环境变量来设置,则该属性对应于SPRING_CONFIG_NAME环境变量名。

   它的默认值决定了Spring Boot要加载的配置文件的默认的文件名。

▲ spring.config.location:改变配置文件的加载路径。

     如果用OS环境变量来设置,则该属性对应于SPRING_CONFIG_LOCATION环境变量名。
 其默认值是5个路径:
   optional: classpath:/
   optional: classpath:/config/
   optional: file:./
   optional: file:./config/
   optional: file:./config/*/ 

  它的默认值决定了Spring Boot默认到哪些路径下搜索配置文件。


▲ spring.config.additional-location:添加额外的加载路径,不会覆盖原有的配置文件的加载路径。

 例如将spring.config.additional-location属性设置为“optional:classpath:/fkjava/,optional:file:./fkit/”,
 此时Spring Boot将依次从如下路径加载配置文件:
(1)optional:classpath:/(类加载路径的根路径)
(2)optional:classpath:/config/(类加载路径下的/config包)
(3)optional:file:./(当前路径)
(4)optional:file:./config/(当前路径下的/config子目录)
(5)optional:file:./config/*/(当前路径下的/config子目录的任意直接子目录)
(6)optional:classpath:fkjava/
(7)optional:file:./fkit/

★ 导入额外的配置文件:

- PropertiesFactoryBean | YamlPropertiesFactoryBean:将属性文件或YAML文件加载成Properties对象。
  用法很简单:直接在容器中配置PropertiesFactoryBean | YamlPropertiesFactoryBean工厂Bean即可。

- YamlMapFactoryBean:它将YAML文件加载成Map对象。
  用法很简单:直接在容器中配置YamlMapFactoryBean工厂Bean即可。

======上面两种方式只是将配置文件加载成容器中的Properties或Map Bean,并没有添加到配置环境中=====


- PropertiesPropertySourceLoader | YamlPropertySourceLoader:将属性文件或YAML文件加载成PropertySource。
  通常用于在配置环境后处理器中使用,接下来可将PropertySource添加到配置环境中。
  ——这种方式的加载时机非常早!
  
- @PropertySource注解和@TestPropertySource注解只能读取属性文件(propertie文件)
  告诉Spring Boot要去加载哪些额外的属性文件。

  【注意】 @PropertySource注解去加载属性文件时,默认所使用的字符集是操作系统相关的。
           如果你保存属性文件使用了UTF-8字符集,使用该注解时也需要通过encoding属性来指定对应的字符集。

- spring.config.import属性来指定要加载哪些额外的配置文件。

代码示例

演示spring.config.import属性来指定要加载哪些额外的配置文件

spring.config.import是在application.yml 配置文件中使用,项目启动的时候就会自动去加载这个application.yml配置文件,然后这个类才能通过@Value注解获取到对应的自定义配置文件中的属性值。
在这里插入图片描述

演示用@PropertySource注解来加载自定义的配置文件。这个注解只能用来加载properties的文件。

这个注解是加载启动类上面的。
在这里插入图片描述

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

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

相关文章

中国农村程序员学习此【ES6】购买大平层,开上帕拉梅拉,迎娶白富美出任CEO走上人生巅峰

注:最后有面试挑战,看看自己掌握了吗 文章目录 比较 var 和 let 关键字的作用域--var可能被随时覆盖-全局变量for循环全局作用域函数作用域块作用域循环作用域HTML 中的全局变量提升改变一个用 const 声明的数组防止对象改变使用箭头函数编写简洁的匿名函…

aws的EC2云服务器

亚马逊官网有免费试用1年的服务器 1. 启动生成实例 1.1 创建实例时需要生成 使用的默认的 Debian 和 一个.pem后缀的秘钥 1.2 网上下一个Mobaxterm ,实例名是公有 IPv4 DNS 地址 ,使用SSH连接,登录名是admin 1.3 登录进去后 输入用户名 admin 后进去,sudo su 切换成 root…

python-爬虫作业

# -*- coding:utf-8 -*-Author: 董咚咚 contact: 2648633809qq.com Time: 2023/7/31 17:02 version: 1.0import requests import reimport xlwt from bs4 import BeautifulSoupurl "https://www.dygod.net/html/gndy/dyzz/" hd {user-Agent:Mozilla/4.0 (Windows N…

项目管理困扰?这里有个6W3H解决方案

引言 在项目管理的过程中,我们经常面临各种各样的挑战和问题。例如,如何确定项目的目标?如何分配资源?何时开始执行项目?在哪里进行项目?这些问题如果没有得到正确的解答,将会严重影响项目的进…

LAXCUS:私域部署的DataBricks

随着大数据技术的不断发展,越来越多的企业开始关注数据的价值和应用。Databricks作为一家开源的大数据平台,为企业提供了强大的数据分析和处理能力。然而,传统的Databricks部署方式存在一定的局限性,比如需要依赖于云服务提供商的…

go 语言实战入门案例之猜数字

文章和代码已经归档至【Github仓库:https://github.com/timerring/backend-tutorial 】或者公众号【AIShareLab】回复 go 也可获取。 猜数字 第一个例子里面,我们会使用 Golang 来构建一个猜数字游戏。 在这个游戏里面,程序首先会生成一个介…

如何在群晖NAS中使用cpolar内网穿透

如何在群晖nas中使用cpolar内网穿透 文章目录 如何在群晖nas中使用cpolar内网穿透 今天,我们来为大家介绍,如何在群晖系统中,使用图形化界面的cpolar。 cpolar经过图形化改造后,使用方法已经简便了很多,基本与其他应用…

如何正确使用 ThreadLocal,你真的用对了吗? | 京东云技术团队

引言: 当多线程访问共享且可变的数据时,涉及到线程间同步的问题,并不是所有时候,都要用到共享数据,所以就需要ThreadLocal出场了。 ThreadLocal又称线程本地变量,使用其能够将数据封闭在各自的线程中&…

振弦传感器信号转换器应用山体滑坡安全监测

振弦传感器信号转换器应用山体滑坡安全监测 随着人类文明的进步,自然灾害对人们的生活和财产安全造成的威胁也越来越大。山体滑坡作为自然灾害中的一种,给人们的生活和财产安全带来了极大的威胁。因此,进行山体滑坡的安全监测显得尤为重要。振…

Vue2:基础入门2

Vue2:基础入门2 Date: July 29, 2023 Sum: Computed计算属性、watch侦听器、水果车 计算属性 基础及案例: 概念: 基于现有的数据,计算出来的新属性。 依赖的数据变化,自动重新计算。 计算属性本质上就是一个 func…

C语言中的常量

整型常量 常量是指在程序运行期间其数值不发生变化的数据。整型常量通常简称为整数。 整数可以是十进制数、八进制数和十六进制数。例如,十进制的数值3356可以有下列二种不同的表示形式: 八进制数 06434十六进制数 0xd1c Tip:当我们判断十六进制或八进…

【JavaEE初阶】博客系统后端

文章目录 一. 创建项目 引入依赖二. 设计数据库三. 编写数据库代码四. 创建实体类五. 封装数据库的增删查改六. 具体功能书写1. 博客列表页2. 博客详情页3. 博客登录页4. 检测登录状态5. 实现显示用户信息的功能6. 退出登录状态7. 发布博客 一. 创建项目 引入依赖 创建blog_sy…

Qt编写自定义控件:自定义表头实现左右两端上部分圆角

如上图,左上角和右上角凸出来了。设置表格圆角和表头圆角和QHeaderView::section圆角都不管用。解决此问题需要重写QHeaderView的paintSection()函数: class CustomHeaderView : public QHeaderView { public:explicit CustomHeaderView(Qt::Orientati…

使用toad库进行机器学习评分卡全流程

1 加载数据 导入模块 import pandas as pd from sklearn.metrics import roc_auc_score,roc_curve,auc from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression import numpy as np import math import xgboost as xgb …

Layui实现OA会议系统之会议管理模块总合

目录 一、项目背景 二、项目概述 1. 概述 2. 环境搭建 3. 工具类引用 4. 功能设计 4.1 会议发布 4.2 我的会议 4.3 会议审批 4.4 会议通知 4.5 待开会议 4.6 历史会议 4.7 所有会议 5. 性能优点 5.1 兼容性好 5.2 可维护性和可扩展性 5.3 轻量灵活 5.4 模块化设计…

C++ 第六弹 STL

目录 1.什么是stl 2.六大组件-容器-序列式容器-C98 string 3.六大组件-容器-序列式容器-C98 vector 4.六大组件-容器-序列式容器-C98 list 5.六大组件-容器-序列式容器-C98 deque 6.六大组件-容器-序列式容器-C11 array 7.六大组件-容器-序列式容器-C11 forward_list 8…

Kaggle狗图像分类实战

文章目录 Kaggle狗图像分类实战d2l安装问题python语法学习os.path.joind2l 数据加载streamlit Kaggle狗图像分类实战 d2l安装问题 d2l安装失败,报错如上图 去下面的网站下载到该项目文件目录下再pip install即可 Python d2l项目安装包(第三方库)下载详情页面 - …

若依打印sql

官方issue 自动生成的代码,sql日志怎么没有打印 在ruoyi-admin中的application.yml配置如下。 # 日志配置,默认 logging:level:com.ruoyi: debugorg.springframework: warn#添加配置com.ying: debug输出sql

java 分支控制语句

在程序中,程序运行的流程控制决定程序是如何执行的。 顺序控制 介绍: 程序从上到下的逐行的执行,中间没有任何判断和跳转。 使用:java中定义变量时,采用合法的前向引用。如: public class Test{int num…

成都链安:7月区块链安全事件爆发式增长,导致损失超4.11亿美元

7月,各类安全事件数量及造成的损失较6月爆发式增长。7月发生较典型安全事件超36起,各类安全事件造成的损失总金额约4.11亿美元(虚拟货币案件涉案金额除外),较6月上涨约321%。Rug Pull导致损失约2065万美元,…