springboot有关配置文件的问题
内部配置文件
springboot提供两种内部配置文件类型
读取配置文件的三种方法
详见yml语法
profile
我们在开发Spring Boot应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务器端口等等,其配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile功能就是来进行动态配置切换的。
1)profile配置方式
.多profile文件方式.
你可以在resources下创建多个properties文件,
例如applicaton-dev.properties(开发环境),
application-pro.properties(生产环境),
application-test.properties(测试环境),
再用application.properties来确定调用哪个配置
例如在application.properties中编写spring.profiles.active=pro,
而在application-pro.properties中编写server.port=8081
那么输出端口号就为8081
.yml多文档.
在一个application.yml文件中中直接定义多个环境端口
注意书写规范,利用三个—来隔开
2)profile激活方式
.配置文件.
在主配置文件中直接利用spring.profiles.active=pro
来激活你想要运行的配置文件
.虚拟机参数和命令行参数.
你也可以利用虚拟机参数和命令行参数确定,
–Dspring.profiles.active=test
or
–spring.profiles.active=test
其优先级大于主配置文件中的spring.profiles.active=pro
内部配置文件加载顺序
总结,config优先级最大;父模块>子模块;
但子模块打包后并不会打包父模块的配置文件,
所以子模块打好的jar包还是运行自己的配置
外部配置文件
如果你已经写好springboot项目并且打好jar包但发现一些配置写错,
或者实际需要没有开发工具idea等,
那么就得从命令行来启动jar包从而启动springboot项目
你可以直接在命令行启动项目
也可以直接在命令行利用一些参数来确定你的配置,
基于命令行的配置是优先于你内部配置文件的
例如
这就会直接确定你的运行端口
还可以利用
当然,这样每次用命令行来确定你的配置文件时不可取的,
实际开发过程中配置文件往往很长
这时候可以直接利用
–spring.config.loaction=d://application.properties
将配置文件放在你想要放在的电脑本地位置,
再在命令行中利用spring.config.loaction进行定位,
这时候相当于直接运行外部配置文件
当然你也可以直接将配置文件放在你打包好的jar包的同级目录下,
这时候你可以直接运行jar包,此时不需要进行定位,
但要注意如果你config下也有配置文件,那么其优先级是最大的