springboot
允许你外部化配置,这样你就可以工作在不同的环境中而保持代码不变。你可以使用properties文件,ylm
文件,环境变量,命令行参数来外部化配置。你可以使用@value注解,spring的Enviroment
类,或者结构化对象(@configurationProperties
)来注入这些外部化属性值。
外部配置:我的理解是在程序包之外的配置,也就是springboot
打包成jar后,在jar外面的一切配置。内部配置当然就是jar包内的配置文件,包括properties文件、yml
文件。
而配置文件的优先级顺序,springboot
的开发文档已经很清楚了,重点关注的是4、12、13、14、15
- 4.命令行参数
- 12.
jar
包外面,特定环境的profile
配置文件(application-{profile}.properties
)和yml
文件 - 13.
jar
包内,特定环境的profile
配置文件(application-{profile}.properties
)和yml
文件 - 14.
jar
包外面的主配置文件application.properties
和application.yml
文件 - 15.
jar
包外面的特定环境的profile
配置文件(application-{profile}.properties
)和yml
文件
也就是说在命令行参数中配置的属性,即时在12、13、14、15中配置了,也不起到作用,命令行配置的属性说了算,那4中没配置的属性呢,那就依次看后面的配置文件是否配置了,也就是上一篇文章说的互补配置。相同配置优先级决定,不同配置互补决定。