项目开发一般都会有开发服develop 和生产服production ,不同服的配置会有差异,部署运行的时候就希望加载不同的配置运行程序。
springboot项目 可以通过启动时指定虚拟机参数选择加载的配置文件
虚拟机指定加载配置文件参数 --spring.profiles.active=xxx
例如:
//运行 springboot项目 jar包 test.jar 加载配置文件 application-prod.properties
java -jar test.jar --spring.profiles.active=prod
//运行 springboot项目 jar包 test.jar 加载配置文件 application-dev.properties
java -jar test.jar --spring.profiles.active=dev
注: 即使通过参数 --spring.profiles.active 指定加载配置文件,springboot还是会先加载默认的配置文件application.properties , 然后再去加载active 指定的配置文件,如果配置内容相同会被后面指定加载的配置文件内容覆盖.
在默认配置文件里面也可以指定加载别的配置文件
例如 在默认配置文件 application.properties 中 设置:
server.port=8080
spring.profiles.active=test
#...
#...
#...
这样配置运行程序后 也是会先加载默认配置文件application.properties 内容,然后去加载指定的配置文件application-test.properties的内容.
如果 在默认配置文件中设置了 spring.profiles.active=test , 并且在运行时 也指定了虚拟机参数 --spring.profiles.active=dev , 结果是先加载默认配置文件内容,再加载application-dev.properties文件内容, 不会加载application-test.properties 文件内容
也就是说 同时存在 默认配置文件 和 虚拟机启动参数 中 设置 spring.profiles.active,虚拟机参数指定加载配置文件有效。