挂载的意思:启动服务后,把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);
欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感谢。