springboot启动读取外部配置⽂件properties文件用什么打开
springboot启动读取外部配置⽂件
有时候项⽬打包成⼀个jar 或者war ,通过java -jar 命令运⾏springboot 项⽬,因为springboot 项⽬有⾃⼰的application.properties 配置⽂件,但是我们打完包之后,它也会打到包⾥边,倒是也能打开压缩包修改properties ⽂件,但是也是较为⿇烦。
现在有如下需求,⽐如客户需要在很多个服务器部署⼀套项⽬,但是它们的数据库连接不⼀样,我们不能针对于这么多服务器,多次打包,很恶⼼,当然可以打完包,复制⼀堆,分别修改压缩包⾥边的配置⽂件。
读取外部配置⽂件
springboot 有读取外部配置⽂件的⽅法,如下优先级:
第⼀种是在jar包的同⼀⽬录下建⼀个config⽂件夹,然后把配置⽂件放到这个⽂件夹下。北京尚学堂百战程序员怎么样
python编程快速上手 让繁琐工作自动化第2版百度云第⼆种是直接把配置⽂件放到jar包的同级⽬录。
第三种在classpath下建⼀个config⽂件夹,然后把配置⽂件放进去。
第四种是在classpath下直接放配置⽂件。vagrant歌词的写作含义
看到如上的优先级了吗?也就是说springboot 默认是优先读取它本⾝同级⽬录下的⼀个config/application.properties ⽂件的。我们通常在src/main/resources ⽂件夹下创建的application.properties ⽂件的优先级竟然是最低的。
下边这个是config/application.properties ⽂件放置位置。提前我将它的port 设置为1000 ,另外war 包⾥也有⼀个application.properties ⽂件,它的port 是3000 。
容器类别划分图直接命令执⾏:
java -jar cloud-lyzx-project.war
的确发现访问端⼝是1000 ,⽽不是⾥边的3000 。
然后我⼜拿到外边来,下边这个是application.properties ⽂件放置位置。提前我将它的port 设置为2000
在当前位置直接启动jar包:
java -jar cloud-lyzx-project.war
你会发现,访问端⼝是2000 ,还不是⾥边的3000 。
关于读取配置⽂件的问题,如下图:
总结了⼀下他发现的:
内外都有配置⽂件,配置⽂件读取是有优先级,外配置⽂件优于内配置⽂件读取。(这个没疑问)。
hive decimal类型如果内配置⽂件⾥有外配置⽂件没有的配置,那两者互补。⽐如外配置⽂件没有配置数据库,内配置⽂件⾥配置了数据库,那内配置⽂件的配置会被使⽤。
如果内配置⽂件⾥和外配置⽂件⾥都有相同的配置,⽐如两者都配置了数据库,但是两个连接的不同,那外配置⽂件会覆盖内配置⽂件⾥的配置。
感谢那位⼤神了,我没有详细研究这个,有兴趣的⾃我验证下吧。
参考⽂章:
utiao/i6717995789072728590
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论