Springboot引用外部配置文件
来源:互联网 发布:淘宝香港代购好的店铺 编辑:程序博客网 时间:2024/06/06 03:04
现在的项目越来越多的都是打包成jar运行尤其是springboot项目,这时候配置文件如果一直放在项目中,每次进行简单的修改时总会有些不方便,这里我们看下打包成jar之后,从外部配置文件中读取配置信息。
首先想到的是通过java代码读取外边某个路径下的文件,但是开始做之后发现好多问题。后来又找其它解决方案,正好搜到一种简单的解决方式:
java -jar demo.jar --Dspring.config.location=myapplication.properties
这样就可以通过@value注解读取myapplication.properties中的配置信息了。(上边的大写D好像可以不写的)
后来想着直接把spring.config.location写到application.properties配置文件中,然后指定一个固定的外部配置文件来获取信息,这样启动的时候就可以不用加最后一行了。
spring.config.location=C:\\Users\\Administrator\\git\\Display\\host.properties
可是这种方式是行不通的,比如我配置文件中有下面信息:
myname=hellopangkunkun
代码:
@Value("${myname}") private String name;
我在启动的时候直接报这个地方的错误,说是无法找到myname,导致整个项目出异常。
后来搜了下文章,对比官网文档,又得到了一些信息:
24.3 Application property filesSpringApplication will load properties from application.properties files in the following locations and add them to the Spring Environment:A /config subdirectory of the current directory.The current directoryA classpath /config packageThe classpath rootThe list is ordered by precedence (properties defined in locations higher in the list override those defined in lower locations).
这里说了四种方式可以把配置文件放到外部的。
第一种是在jar包的同一目录下建一个config文件夹,然后把配置文件放到这个文件夹下;
第二种是直接把配置文件放到jar包的同级目录;
第三种在classpath下建一个config文件夹,然后把配置文件放进去;
第四种是在classpath下直接放配置文件。
这四种方式的优先级是从一到四一次降低的。
由于我们是要从外部读取文件,所以直接说前两种。
看下文件目录结构:
这里的application.properties是我们的配置文件,config是创建的另外一个目录,放的也是application.properties。
Display-1.0-SNAPSHOT.jar中可以包含application.properties配置文件也可以不包含。
为了验证可以在config中设置myname=name1,jar同级目录中设置myname=name2,如果jar中包含配置文件,将其中设置成myname=name3。
直接使用指令启动:
java -jar Display-1.0-SNAPSHOT.jar
之后验证可得知,我们通过@Value(“${myname}”)获取到的myname的值是name1,把config下的配置文件删除后获取的结果是name2,都删除后才会获取jar包中配置文件的数据name3。
另外如果我们想要想配置测试、开发、生产环境一样使用另外一个配置文件怎么来实现呢?
下面继续,我把application.properties的信息修改如下:
spring.profiles.active=dev,host
配置文件目录结构:
我又新增了一个名为application-host.properties的配置文件,同理也可以把这个文件考出来放到jar包外面,同级目录或者config下。
这样项目启动之后dev配置文件和host配置文件都会生效。
这里为了突出其他的配置文件我只把host的拷出来了,dev的还是在jar包里,application.properties配置文件放在jar中也一样,我们需要的主要是host的配置文件。
这样每次修改的时候只需要修改配置文件信息,然后重启项目就好,不需要重新打包。
如果想要只修改配置文件,不重启项目就能生效,可以考虑用java来读取配置文件中的数据,把它当作一个普通文件来读取,或者写到其他数据库中也行。上面这些方案已经能够满足我的需求了,所以其他的不在做了。
最后提个问题,也是我没弄明白的,希望知道的各位能够给个答案:
我把spring.config.location这个配置写到配置文件中为什么没有生效?
- Springboot引用外部配置文件
- Springboot引用外部配置文件
- springboot 使用外部配置文件
- SpringBoot使用外部的配置文件(四)
- SpringBoot学习记录3------外部配置文件yml
- spring配置文件location引用外部文件
- SpringBoot 打包为war包启动时导入外部配置文件
- springboot 配置文件
- SpringBoot 配置文件
- SpringBoot---配置文件
- springboot-配置文件
- springboot-配置文件
- SpringBoot配置文件
- springboot配置文件
- spring配置文件中引用外部的properties文件
- Web.config引用外部配置文件,实现模块化配置
- Maven打包,把配置文件引用,打到外部
- 【SpringBoot】SpringBoot核心-外部配置
- sklearn.model_selection.train_test_split随机划分训练集和测试集
- 基于mininet+opendaylight搭建SDN测试环境
- Java验证身份证号码是否合法
- 【python 爬虫】python如何以request payload形式发送post请求
- word文档中如何删除空白页
- Springboot引用外部配置文件
- 常用生命周期函数总结
- 教你怎么快速创建字体图标
- 定时器--Spring--SpringBoot
- Android中利用VideoView播放网络上视频的基础用法
- Coursera机器学习 Week9 笔记
- 实现智能家居必不可少的五种无线通讯技术
- 笔记-java线程基础
- 测试主机的信息