Spring boot 官方文档html
官网对配置文件的说明
24.3 Application property files SpringApplication 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 directory A classpath /config package The classpath root The list is ordered by precedence (properties defined in locations higher in the list override those defined in
中文翻译过来就是 这里说了四种方式能够把配置文件放到外部的。java
- 第一种是在jar包的同一目录下建一个config文件夹,而后把配置文件放到这个文件夹下;
- 第二种是直接把配置文件放到jar包的同级目录;
- 第三种在classpath下建一个config文件夹,而后把配置文件放进去;
- 第四种是在classpath下直接放配置文件。
这四种方式的优先级是从一到四一次下降的。 这四种方式的优先级是从一到四一次下降的。spring
因为咱们是要从外部读取文件,因此直接说前两种。数据库
看下文件目录结构: app
这里的application.properties是咱们的配置文件,config是建立的另一个目录,放的也是application.properties。ide
Display-1.0-SNAPSHOT.jar中能够包含application.properties配置文件也能够不包含。spring-boot
为了验证能够在config中设置myname=name1,jar同级目录中设置myname=name2,若是jar中包含配置文件,将其中设置成myname=name3。测试
直接使用指令启动:url
java -jar Display-1.0-SNAPSHOT.jar
以后验证可得知,咱们经过@Value(“${myname}”)获取到的myname的值是name1,把config下的配置文件删除后获取的结果是name2,都删除后才会获取jar包中配置文件的数据name3。spa
多配置文件化
另外若是咱们想要想配置测试、开发、生产环境同样使用另一个配置文件怎么来实现呢?
下面继续,我把application.properties的信息修改以下:
spring.profiles.active=dev,host
配置文件目录结构:
我又新增了一个名为application-host.properties的配置文件,同理也能够把这个文件考出来放到jar包外面,同级目录或者config下。
这样项目启动以后dev配置文件和host配置文件都会生效。
这里为了突出其余的配置文件我只把host的拷出来了,dev的仍是在jar包里,application.properties配置文件放在jar中也同样,咱们须要的主要是host的配置文件。
这样每次修改的时候只须要修改配置文件信息,而后重启项目就好,不须要从新打包。
若是想要只修改配置文件,不重启项目就能生效,能够考虑用java来读取配置文件中的数据,把它看成一个普通文件来读取,或者写到其余数据库中也行。上面这些方案已经可以知足个人需求了,因此其余的不在作了。