外部配置文件的使用是为了对能不文件的配合
1.命令行
java -jar app.jar --name="Spring" --server.port=9000
2.指定配置文件位置
java -jar myproject.jar --spring.config.location=e://application.properties
3.外部不带profile的properties文件
classpath:/config/application.properties
classpath:/application.properties
https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
java –jar xxx.jar --server.port=8083
java -jar springboot-config-0.0.1-SNAPSHOT.jar
目前默认使用了配置文件的设置端口号8082,下面我们通过命令行传参的方式来启动,修改该端口号。
java -jar springboot-config-0.0.1-SNAPSHOT.jar --server.port=8086
可以看到我们已经设置成功了一个参数了,那么能不能设置多个参数呢?当然可以。
java -jar springboot-config-0.0.1-SNAPSHOT.jar --server.port=8086 --server.servlet.context-path=/hehe
可以从结果看到,通过命令行传参的方式,的确是可以传递设置多个参数的。
不过这又带来了一个问题,那就是如果需要传递的参数很多,一个个在命令行传参的话,那还是很麻烦的。
那么有没有一种通过外部配置文件来管理的方式呢?这个是有的。
https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config.files
$ java -jar myproject.jar --spring.config.location=\
optional:classpath:/default.properties,\
optional:classpath:/override.properties
上面这是配置外部配置文件的方式,下面我们将指定一个配置文件路径,执行加载看看修改的端口号效果:
server.port=8090
server.servlet.context-path=/hello
java -jar springboot-config-0.0.1-SNAPSHOT.jar --spring.config.location=d://application.properties
从结果来看,成功加载外部配置文件的设置参数了。
不过,我们还是想简单一些,每次都要写命令行传参还是挺麻烦的。
能不能有一些外部配置文件默认存放的位置,直接将配置文件往那个位置一丢,就会自动加载配置的呢?
当然有!!
server.port=8099
server.servlet.context-path=/hehe
此时,直接启动就会默认自动加载这个配置文件,我们来确认一下:
通过这个演示,我们确认了 jar 包同级目录下的配置文件将会被自动加载。
问题:而在之前只要是 config 目录下的配置文件优先级都会比较高,那么这个外部文件是否也是这样的呢?
新建config文件夹,将配置文件放入:
server.port=8999
server.servlet.context-path=/hahahahaha
image-20220222212717839
此时,我们来启动看看,会不会端口号为 8999
通过验证,我们确认 config 目录下的配置文件优先级更高!!