SpringBoot 根据不同环境切换不同文件路径

news2024/11/18 22:59:37

        最简单的办法就是使用多个 application.yml 配置文件 。一个叫 application-test.yml  测试用;另一个是正式使用的 application-prod.yml 。win环境下大部分是开发测试时候使用的,服务正式上线需要部署在Linux服务器上又换成了Linux。但开发初期或者项目不是很正式,也可以不这样写,就单独写一个application.yml 里面写好两个路径,再写一个文件配置类,在这里面写好方法就行。

application.yml

file:
  path:
    windows: D:\qr_code_duct\qr_code_back\ddinguia\server\files\
    linux: /app/files/

文件配置类 FileProperties

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "file")
public class FileProperties {

    private PathConfig path;

    public PathConfig getPath() {
        return path;}

    public void setPath(PathConfig path) {
        this.path = path;}

    public static class PathConfig {
        private String windows;
        private String linux;

        public String getWindows() {
            return windows;}

        public void setWindows(String windows) {
            this.windows = windows;}

        public String getLinux() {
            return linux;}

        public void setLinux(String linux) {
            this.linux = linux;}
    }

    public String getSavePath() {
        String os = System.getProperty("os.name").toLowerCase();
        if (os.contains("win")) {
            return path.getWindows();
        } else if (os.contains("nix") || os.contains("nux") || os.contains("aix")) {
            return path.getLinux();
        } else {
            throw new IllegalStateException("Unsupported operating system: " + os);
        }
    }
}

具体在代码中使用,就像正常调用参数一样就行,比如先在Service层里面引入

    @Resource
    private FileProperties fileProperties;

然后直接使用即可:

File directory = new File(fileProperties.getSavePath() + File.separator + fileType + "s");

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

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

相关文章

SEGGER Embedded Studio IDE移植FreeRTOS

SEGGER Embedded Studio IDE移植FreeRTOS 一、简介二、技术路线2.1 获取FreeRTOS源码2.2 将必要的文件复制到工程中2.2.1 移植C文件2.2.2 移植portable文件2.2.3 移植头文件 2.3 创建FreeRTOSConfig.h并进行配置2.3.1 处理中断优先级2.3.2 configASSERT( x )的处理2.3.3 关于系…

Unity3D 爆火的休闲益智游戏工程源码/3D资源 大合集

Unity3D休闲益智游戏工程源码大合集 一、关卡类游戏工程源码二、跑酷类游戏工程源码三、消除合成类游戏工程源码四、棋牌类游戏工程源码五、RPG(角色扮演)类游戏工程源码六、FPS(射击)类游戏工程源码十、Unity3D工艺仿真六、Unity游戏资源1、Unity3D 吃鸡…

金融时报:波场亮相哈佛大学并举办TRON Builder Tour活动

近日,波场TRON作为顶级白金赞助商出席哈佛区块链会议并成功举办TRON Builder Tour哈佛站活动,引发海外媒体热议。美联社、金融时报、Cointelegraph等国际主流媒体及加密知名媒体均对此给予了高度评价,认为本次大会对TRON Builder Tour活动具有里程碑意义,彰显了波场TRON致力于促…

护眼台灯什么品牌好?台灯的十大品牌推荐

长时间的使用眼睛,出现疲劳感就会对眼睛造成伤害,最常见的场景就是青少年儿童学习看书,成年人晚上工作时。相信不少人就是这样度过的,因此数据表明目前中国近视患者超过6亿人。所以想要拥有一个良好的视力健康一款光源合适的台灯是…

【数据结构】栈和队列(链表模拟队列)

学习本章节必须具备 单链表的前置知识, 建议提前学习:点击链接学习:单链表各种功能函数 细节 详解 本章节是学习用 单链表模拟队列 1. 单链表实现队列 思路如下 队列:只允许在一端进行插入数据操作,在另一端进行删除数…

代码中哪些复杂的结构图是怎么画出来的?

最近找到一个在线的代码架构图生成器,你只要画出结构图,就会自动生成代码示意图: https://asciiflow.com/#/

计算机网络—TCP协议详解:协议构成、深度解析(3)

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:マリンブルーの庭園—ずっと真夜中でいいのに。 0:34━━━━━━️💟──────── 3:34 🔄 ◀️…

变频电源都有哪些故障?

变频电源是一种可以将市电的交流电转换为频率可调的交流电的电力电子设备,它可以根据需求调整输出电压和频率,为设备运行提供稳定可靠的电源。但是在实际使用过程中常会遇到一些故障,今天纳米软件将介绍这些故障以及解决办法。 1. 短路 短路故…

开源项目实现简单实用的股票回测

1 引言 之前,尝试做股票工具一直想做的大而全,试图抓取长期的各个维度数据,然后统计或者训练模型。想把每个细节做到完美,结果却陷入了细节之中,最后烂尾了。 最近,听到大家分享了一些关于深度学习、时序…

【xhs爬虫软件】把小红书评论comment接口封装成GUI采集工具!

用Python开发爬虫采集软件,可自动抓取小红书评论数据,并且含二级评论。 小红书的评论接口URL是: https://edith.xiaohongshu.com/api/sns/web/v2/comment/page 开发者模式分析过程: 进而封装成GUI界面软件,如下&…

【Axure教程0基础入门】05动态面板

05动态面板 1.动态面板是什么? 一个用来存放多个元件的容器(container) 其中包含多个状态(state),但同时只能显示一个 状态之间,可以通过交互动作(action)控制切换和动…

【Spring Cloud】服务容错中间件Sentinel进阶——五大规则

文章目录 Sentinel的概念和功能基本概念资源规则 重要功能流量控制熔断降级系统负载保护 SentineI 规则流控规则简单配置配置流控模式直接流控模式关联流控模式链路流控模式 配置流控效果 熔断规则慢调用比例异常比例异常数 热点规则热点规则简单使用热点规则增强使用 授权规则…

请编写函数fun,该函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+l到最后的字符移到字符串的前部。

本文收录于专栏:算法之翼 https://blog.csdn.net/weixin_52908342/category_10943144.html 订阅后本专栏全部文章可见。 本文含有题目的题干、解题思路、解题思路、解题代码、代码解析。本文分别包含C语言、C++、Java、Python四种语言的解法完整代码和详细的解析。 题干 请编…

Ai-WB2 系列模组SDK接入亚马逊

文章目录 前言一、准备二、亚马逊云物模型建立1. 注册亚马逊账号,登录AWS IoT控制台,[注册地址](https://aws.amazon.com/cn/)2. 创建好之后点击登录3. 创建物品以及下载证书 三、连接亚马逊云demo获取以及配置1. 下载源码2. 按照顺序执行下面指令3. 修改…

2024接口自动化测试高频面试题【建议收藏】

一、json和字典的区别? json就是一个文本、字符串;有固定的格式,格式长的像python字典和列表的组合;以key-value的键值对形式来保存数据,结构清晰,。可以说是目前互联网项目开发中最常用的一种数据交互格式…

buuctf——[CISCN2019 华北赛区 Day2 Web1]Hack World

buuctf——[CISCN2019 华北赛区 Day2 Web1]Hack World 1.根据提示,说明flag在表里 2.那就猜测存在sql注入,反手测试一波id1 3.尝试使用1--进行注释 4.直接丢进salmap里吧,不出意外多半是跑不出来 5.直接放入fuzz里进行测试 6.发现当我…

Springboot 结合PDF上传到OSS

目录 一、首先注册阿里云OSS(新用户免费使用3个月) 二、步骤 2.1 将pdf模板上传到oos 2.2 这里有pdf地址,将读写权限设置为共工读 ​编辑 三、代码 3.1 pom.xml 3.2 配置文件 3.3 oss model 3.4 配置类(不需要修改) 3.5 将配置类放入ioc容器 3.…

Linux之rocky8操作系统安装

一、rocky系统简介 CentOS宣布停止开发后,CentOS的原创始人Gregory Kurtzer在CentOS网站上发表评论宣布,他将再次启动一个项目以实现CentOS的最初目标。它的名字被选为对早期CentOS联合创始人Rocky McGaugh的致敬。rocky系统一个开源、社区拥有和管理、免…

VForm3的文件上传方式

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

快排非递归与计数排序

感谢大佬的光临各位,希望和大家一起进步,望得到你的三连,互三支持,一起进步 个人主页:LaNzikinh-CSDN博客 收入专栏:初阶数据结构_LaNzikinh篮子的博客-CSDN博客 文章目录 前言一.快速排序非递归二.数据结构栈与内存栈…