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

        最简单的办法就是使用多个 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");

在 Win 环境下测试 :

在 Linux 环境下测试:

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

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

相关文章

Docker容器概念介绍与基本管理

前言 在软件开发和部署环境中,使用 Docker 等容器技术可以帮助团队实现快速、一致、可靠的应用程序部署,提高开发效率和应用程序的可移植性。 目录 一、虚拟化产品介绍 1. 云服务模型 1.1 IaaS 1.2 PaaS 1.3 SaaS 1.4 DaaS 2. 产品介绍 2.1 虚…

5款好用的监控员工电脑软件推荐 (如何监控员工上班工作情况)

在现代的商业环境中,管理和监控员工的工作内容是至关重要的。 为了确保员工的工作效率和质量,公司需要使用一些工具来监控他们的工作进程。 以下是五款实用的监控员工工作内容的软件。 域智盾软件 域智盾是一款专为企业打造的智能管理系统。 它借助人…

FPGA设计篇——波形绘制软件

FPGA设计篇——波形绘制软件 写在前面一、Visio二、TimeGen三、WaveDrom写在最后 写在前面 在FPGA设计过程中,经常需要编写设计文档,其中,不可缺少的就是仿真波形的绘制,可以直接截取Vivado或者Modelsim平台实际仿真波形&#xff…

JVM学习笔记(四)类加载与字节码技术

目录 一、类文件结构 二、字节码指令 2.3 图解方法执行流程 1)原始 java 代码 2)编译后的字节码文件 3)常量池载入运行时常量池 4)方法字节码载入方法区 5)main 线程开始运行,分配栈帧内存 6&…

分布式-知识体系

分布式系统 本质就是一堆机器的协同,要做的就是用各种手段来让机器的运行达到预期 分布式业务场景 分布式四纵四横说 基于 MSA(微服务架构)的分布式知识体系 相关概念 – 【摘自网络原文】 节点与网络 节点 传统的节点也就是一台单体的物…

搞嵌入式到底属于程序员吗?

搞嵌入式到底属不属于程序员呢?毫无疑问,当然算啊!而且我十分赞同另一位朋友所说的:嵌入式程序员是难得的全栈型程序员。尽管嵌入式领域方向众多且繁杂,但他们同样也是会写代码的程序员。 嵌入式行业主要分为硬件和软…

《从零开始的Java世界》11网络编程

《从零开始的Java世界》系列主要讲解Javase部分,从最简单的程序设计到面向对象编程,再到异常处理、常用API的使用,最后到注解、反射,涵盖Java基础所需的所有知识点。学习者应该从学会如何使用,到知道其实现原理全方位式…

打开IIS网站网页错误提示Argument ‘Key must not be null‘ cannot be null.解决方案 Oracle数据库监听

打开网页异常如下: /“应用程序中的服务器错误。 Argument Key must not be null cannot be null.参数名:Key must not be null 客户端 连接oracle 提示:ORA-12541:TNS:无监听程序 按组合键WindowsR,打开运行 输入命令:lsnrctl s…

周报不止是汇报进度,如何用周报轻松提升团队协作效率?

周报是工作中常见的沟通工具,对于项目经理来说尤其重要。写周报不仅仅是为了完成一项任务,它更是项目管理中不可或缺的环节,它不仅有助于项目经理跟踪项目进度,还加强了团队成员间的沟通与协作。以下是几个关键的原因:…

Geoserver的RESTful接口使用

概述 GeoServer提供了一个RESTful接口,客户端可以通过该接口获取有关实例的信息并进行配置更改。REST接口使用简单的HTTP调用,通过客户端就可以配置GeoServer,而无需使用Web管理接口。 Geoserver中的关系 工作区、数据源、图层、图层组以及…

用 LMDeploy 高效部署 Llama-3-8B,1.8倍vLLM推理效率

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

微信小程序Vue+nodejs+uniapp课堂教学辅助在线学习系统

uni-app框架:使用Vue.js开发跨平台应用的前端框架,编写一套代码,可编译到Android、小程序等平台。 后台主要实现功能:一、用户的管理(用户的信息管理) 二、 课程的管理(课程发布,课后成绩的查看&#xff0c…

【C语言__联合和枚举__复习篇10】

目录 前言 一、联合体 1.1 联合体的概念 1.2 联合体与结构体关于声明和内存布局的比较 1.3 联合体的大小如何计算 1.4 使用联合体的2个示例 二、枚举体 2.2 枚举体的概念 2.2 枚举体的优点 前言 本篇主要讨论以下问题: 1. 联合体是什么,它有什么特点 …

每天一题crypto(1)---RSA(小明文攻击)

零.做题: 看到N很大,如果满足 就表示模过程中,没有丢失信息,所以 直接解即可,不要管pq等等 一.题目: N很大 from Crypto.Util.number import * from gmpy2 import *flag bNSSCTF{******}p getPrime(5…

【SpringBoot整合系列】SpringBoot配置多数据源

目录 背景技术选型配置多数据源思路(以两个为例)代码实现1.导入依赖2.各自的配置 3.各自的dataSourcenews数据库的smbms数据库的注意:Primary注解 4.各自的SqlSessionFactory等news数据库的smbms数据库的 5.去掉启动类头上的MapperScan6.各自的mapper接口7.各自的ma…

防火墙分为哪三类以及他们的优缺点

1. 包过滤防火墙(Packet Filtering Firewall)2. 状态检查防火墙(Stateful Inspection Firewall)3. 应用层防火墙(Application Layer Firewall)零基础入门学习路线视频配套资料&国内外网安书籍、文档网络…

Spring Cloud Alibaba Sentinel 使用

初识Sentinel Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址: home | Sentinel 需要了解的概念 簇点链路 在学习 Sentinel 的使用之前,我们有必要首先了解一下簇点链路。当请求进入微服务时,首先会访Controller、Service、Ma…

C++11可变模板参数

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

百面算法工程师 | 卷积基础知识——Convolution

目录 8.1 图像卷积过程 8.2 卷积层基本参数 8.3 卷积后图像的长和宽大小的计算方式 8.4 卷积神经网络中的权重共享 8.5 上采样中的反卷积 8.6 空洞卷积 8.7 深度可分离卷积 8.8 为什么可分离卷积中Depthwise卷积后还要进行pointwise卷积 8.9 分组卷积 Group Conv 8.1…

前端导入的方便方法

直接上代码: 利用input的导入功能 这是相应的处理方法 是不是很简单呢
最新文章