修改Linux环境下Springboot项目读取配置文件路径

news/2025/2/5 9:38:24/文章来源:https://www.cnblogs.com/Bernard94/p/18698786

1、在“src/main/resources/META-INF/spring.factories”增加文件路径:

org.springframework.boot.env.EnvironmentPostProcessor=\
com.code.config.ConfigEnvironmentPostProcessor

 2、在指定路径下创建文件:ConfigEnvironmentPostProcessor

public class ConfigEnvironmentPostProcessor implements EnvironmentPostProcessor {private static final Logger log = LoggerFactory.getLogger(ConfigEnvironmentPostProcessor.class);static String DEF_CONFIG_PATH;static String PRJECT_NAME = "PRJECT-NAME";static final String PROJECT_CONFIG_FILE = "META-INF/project.properties";private final YamlPropertySourceLoader loader = new YamlPropertySourceLoader();public ConfigEnvironmentPostProcessor() {}public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {String proName = null;if (!FileUtil.exist(DEF_CONFIG_PATH)) {try {log.error("在【{}】中没有发现配置文件!", DEF_CONFIG_PATH);throw new Exception("没有发现配置文件!");} catch (Exception var8) {var8.printStackTrace();}}if (ClassUtils.getDefaultClassLoader().getResource("/") != null) {String proDir = ClassUtils.getDefaultClassLoader().getResource("/").getPath();String proPath = proDir + "META-INF/project.properties";if (FileUtil.exist(proPath)) {Props props = new Props(proPath);Object obj = props.get(PRJECT_NAME);if (Objects.nonNull(obj)) {proName = String.valueOf(obj);}}if (StrUtil.isBlank(proName)) {proName = "";}this.loadProProperties(proName, environment);}}private void loadProProperties(String pro, ConfigurableEnvironment environment) {MutablePropertySources propertySources = environment.getPropertySources();String basePath = DEF_CONFIG_PATH;if (StrUtil.isNotBlank(pro)) {basePath = basePath + File.separator + pro;}Resource path = new FileSystemResource(basePath + File.separator + "application.yml");PropertySource<?> propertySource = this.loadYaml(path);propertySources.addLast(propertySource);Object active = propertySource.getProperty("spring.profiles.active");if (Objects.nonNull(active)) {path = new FileSystemResource(basePath + File.separator + "application-" + active + ".yml");propertySource = this.loadYaml(path);propertySources.addLast(propertySource);}}private PropertySource<?> loadYaml(Resource path) {if (!path.exists()) {throw new IllegalArgumentException("Resource " + path + " does not exist");} else {try {return (PropertySource) this.loader.load(path.getFilename(), path).get(0);} catch (IOException var3) {throw new IllegalStateException("Failed to load yaml configuration from " + path, var3);}}}static {String os = System.getProperty("os.name").toLowerCase();if (os.contains("linux")) {DEF_CONFIG_PATH = "/home/myDoip/project/config";} else {String path = ConfigEnvironmentPostProcessor.class.getResource("/").toString();path = path.replace("file:/", "").replace("/target/classes/", "");DEF_CONFIG_PATH = path;File file = new File(DEF_CONFIG_PATH + File.separator + "application.yml");if (!file.exists()) {path = path + "/src/main/resources/";DEF_CONFIG_PATH = path;}System.out.println("配置文件所在位置:" + DEF_CONFIG_PATH);PRJECT_NAME = "PRJECT-NAME-DEV";}}
}

 

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

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

相关文章

离职注意事项

离职前,有几个文件夹是必须删除的: 1.个人文件夹 在离职前,一定要清除个人文件夹里的所这有文件。这些文件可能包括个人照片、简历、工作笔记、项目文件等。这些文件包含了你的个人信息以及公司的商业机密,如果不及时删除,可能会给公司带来潜在的风险。 2. 邮件文件夹 如果…

使用国内镜像源

export HF_ENDPOINT=https://hf-mirror.compip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package

AI 工程必读好书:10 本关于 AI 科学与工程的深刻见解

AI 工程的必读书籍 —— 以及《Brave New Words》(图片为作者原创作品) 几年前,我推荐了 《数据科学必读好书》 和 《数据科学必读好书 2》 中的 21 本书。自那以后,很多事情发生了变化。虽然数据科学家和机器学习工程师仍然是大型公司的必要岗位,但 “AI 工程师” 这一特定…

manacher(马拉车)

// Luogu P3805 【模板】manacher 算法 include include include using namespace std; const int N=3e7; char a[N],s[N]; int d[N]; //回文半径函数 void get_d(char*s,int n){ d[1]=1; for(int i=2,l,r=1;i<=n;i++){ if(i<=r)d[i]=min(d[r-i+l],r-i+1); while(s[i-…

字符串1最小表示法

include <bits/stdc++.h>//洛谷1368 using namespace std; const int N = 7e5; int n; int s[N]; int get_min(){ for(int i=1;i<=n;i++) s[n+i]=s[i]; int i = 1, j = 2, k = 0; while(i<=n && j<=n){ for(k=0; k<n&&s[i+k]s[j+k]; k++); s…

Python uncompyle6不支持高版本

前言全局说明Python uncompyle6不支持高版本一、说明 1.1 环境: Windows 11 家庭版 23H2 22631.3737二、修改源码版本限定 系统是windows11,python版本为3.10.1,安装uncompyle6后报错不支持python3.9及以上版本。 网上搜索说在限定版本的元组中添加版本三、按报错信息修改免责…

Python打包exe反编译还原成源码

前言全局说明打包好的exe文件还在,但是Python源文件不知什么时候被误删了。现在想改动一下功能,重写Python脚本工程量也太大了,怎么办?只能反编译还原源码。一、说明 1.1 环境: Windows 11 家庭版 23H2 22631.3737 Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:4…

2025年1月文章一览

2025年1月编程人总共更新了27篇文章: 1.2024年12月文章一览 2.《计算机组成及汇编语言原理》阅读笔记:p177-p177 3.《计算机组成及汇编语言原理》阅读笔记:p178-p199 4.《计算机组成及汇编语言原理》阅读笔记:p200-p240 5.《计算机组成及汇编语言原理》读后感 6.《CPython …

SQL2016 英文环境下的日期格式。

SELECT PARSE(03 11 2024 11:03PM AS DATETIME USING en-US)

读算法简史:从美索不达米亚到人工智能时代07计算复杂度

旅行商问题是确定一系列城市间最短旅行路线,属NP困难问题,穷举搜索很慢,最快算法也只能找到近似解,其决策问题是NP完全问题。1. 旅行商问题 1.1. the Travelling Salesman Problem1.1.1. 旅行商问题最早的记录出现于19世纪1.1.2. 这个问题被威廉汉密尔顿(William Hamilton)…

[Tools] Vite环境变量

https://cn.vitejs.dev/guide/env-and-mode#env-variables-and-modes添加额外的环境变量 .env #标题 VITE_APP_TITLE=Vite App #端口 VITE_PORT=5173 #是否自动打开浏览器 VITE_OPEN=true .env.development #开发环境端口 VITE_PORT=8848 #是否删除console打印日志 VITE_DROP_C…

家里的厕所马桶堵塞了,如何不花一分钱就轻松地处理好 All In One

家里的厕所马桶堵塞了,如何不花一分钱就轻松地处理好 All In One 马桶堵塞, 管道疏通家里的厕所马桶堵塞了,如何不花一分钱就轻松地处理好 All In One马桶堵塞, 管道疏通原理分析 大气压强,利用工具,提高管道内外的压力差 解决方案马桶刷 塑料袋demos(🐞 反爬虫测试!打击…