java指定配置⽂件启动_springboot启动时指定外部配置⽂件-
boot设置
springboot默认配置⽂件可以配置在resources⽂件夹中,⽂件名为application.properties或l,
打包发布之后,以java -jar的形式去运⾏,因为配置⽂件也打包在了jar⽂件中,所以运维要修改配置什么的就不是很⽅便了,因此考虑将配置⽂件从jar包中抽出来,
可以在运⾏时候⼿动指定配置⽂件,⽐如 命令⾏中直接指定: java -jar -fig.location=D:\config\config.properties springbootrestdemo-0.0.1-SNAPSHOT.jartable manners king mia
但是这样还要去看路径,不同的服务器可能配置的路径不⼀样还得改,也挺⿇烦的。properties是什么文件
因此项⽬中做了⼀个约定:外部配置⽂件名称统⼀叫做app.properties,SpringBootApplication程序启动时,获取到当前执⾏程序的jar 绝对⽬录路径,将app.proeprties跟要执⾏的jar⽂件放置到同级⽬录中,
当然也可以指定⾃⼰的⽬录,⽐如同级⽬录下新加个config⽂件夹统⼀放置配置⽂件也是可以的,这个主要决定于你想要从哪⾥加载配置⽂件了。
于是问题就变成了 获取当前执⾏的jar⽂件的⽬录路径了,这个也很简单啦,⽐如如下:
String path = DefaultClassLoader().getResource("").getPath();
影响的短语获取到的路径在做⼀定处理就能得到jar⽂件所在⽬录了,这⾥要注意windows和linux之间的额路径差异了,可能需要根据不同的操作系统坐下兼容处理,不清除的可以百度下。
代码⽰例:
public static void main(String[] args) throws IOException {
String path = getRootPath();
System.out.println("working on " + path);
String filePath = path + "app.properties";
generic drugSystem.out.println("config file : " + filePath);
InputStream ism = new FileInputStream(filePath);
Properties properties = new Properties();
properties.load(ism);
SpringApplication app = new SpringApplication(VpnLandingApplication.class);
app.setDefaultProperties(properties);
app.run(args);
unsigned long int}
运⾏⽬录结构
cmd为什么进入不了mysql这样就可以直接以 java -jar xxx.jar 来运⾏springboot应⽤程序了,加载的配置⽂件就是同级⽬录下的app.properties,如果要更新配置,直接修改app.properties⽂件,然后重新启动下就可以啦。
不知道有没有更好的⽅式呢,请朋友们告诉我吧、。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论