SpringBoot项目中的配置文件如何挂载出来

挂载的意思:启动服务后,把src/main/resources下的配置文件拷贝一份放到config文件夹下,这样做的好处是,项目上线后,如果需要修改配置文件,可以直接在挂载出来的配置文件中修改配置文件内容,而不用重新打包部署

在这里插入图片描述

1、创建一个类,用来拷贝配置文件
在这里插入图片描述
2、CopyConfigFile.java类的编写, 启动程序时会把配置文件拷贝到config下

package com.gzds.common;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.util.FileCopyUtils;
public class CopyConfigFile {
	public static void postConstruct(List<String> paths) {
		try {
			String url = System.getProperty("user.dir")+"/config/";
			File dir=new File(url);
			dir.mkdirs();
			for(String path:paths) {
				File file = new File(url+path);
				if (file.exists()) {
					System.err.println("文件已经存在");
					continue;
				}
				Resource resource = new ClassPathResource(path);//源文件
				FileOutputStream out = new FileOutputStream(file);//要拷贝到哪里
				FileCopyUtils.copy(resource.getInputStream(), out);//开始拷贝
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

3、在启动类中添加配置文件

package com.gzds;
import java.util.LinkedList;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import com.gzds.common.CopyConfigFile;

@ComponentScan(basePackages="com.gzds")
@SpringBootApplication
public class MidPrivateCloudApplication {
	public static void main(String[] args) {	
		SpringApplication springApplication = new SpringApplication(MidPrivateCloudApplication.class);
		LinkedList<String> list=new LinkedList<String>();
		list.add("application.properties");
		//list.add("mongodb.properties");
		//list.add("zkylogo.jpg");
		//list.add("DL-635.txt");
		//list.add("chinalogo.png");
		//list.add("logback.xml");
		//如果有很多配置文件, 这里可以继续添加
		CopyConfigFile.postConstruct(list);	
		springApplication.run(args);
	}
}

4、启动项目或者运行jar包时,config文件会挂载出来,这样就算项目上线了,也可以更改配置文件
在这里插入图片描述
注意:如果配置文件不是直接放到src/main/java路径下,而是再套一层文件夹,那么CopyConfigFile.java类中的源文件路径要加上文件夹名,如下例子:

在这里插入图片描述
CopyConfigFile.java类中源文件路径要加上文件夹名,就可以了

Resource resource = new ClassPathResource("config/"+path);

欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感谢。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值