如今咱们已经知道,咱们能够经过在运行jar时提供一系列的参数来定制SpingBoot为咱们默认作好的设置。若是咱们要定制的属性不少,在实际开发中,你可能会须要覆盖上百个SpringBoot的默认设置,若是这些设置写在java -jar 运行命令中一点都不优雅,也不利于维护。那如何是好?java
SpringBoot提供了专门的属性配置文件和配置接口。redis
SpringBoot默认加载的属性配置文件名称为application,就像你用Spring框架同样,也有一个全局的配置文件。spring
你能够在resource目录下建立application.properties,把须要定制的SpringBoot属性写入其中,
好比你要修改SpringBoot启动的默认端口,就加入server.port属性;要修改redis的默认端口,能够加入spring.redis属性;要修改rabbitmq的链接地址,能够加入spring.rabbitmq.host属性,就像这样:编程
重启项目后,就看到默认端口已经修改成8081。这跟使用启动命令java -jar运行道理是同样的,只不过看起来更利于维护。若是你以为就这么几个参数,直接写在启动命令中岂不更省事?实际项目中须要进行设置的内容每每不少,甚至还要复杂。springboot
所以,本身定义application.properties来管理框架定制属性的意义就很重要了。app
并且,application.properties的做用远不止于此。框架
他还能方便区分和管理不一样环境的配置。开发人员常常要在本地环境、测试环境甚至生产环境中切换,以便更好的开发或排查问题。在之前,咱们多是经过在application.properties中注释掉一部分并写上另外一部份内容的方式来切换不一样环境。然而,如今有更优雅的方式。编程语言
能够经过再application后添加不一样的后缀名称来区分不一样项目环境,不用所有杂糅在一个配置文件中。好比这样:测试
通常约定,dev表明开发环境,test表明测试环境, prod表明生产环境。经过不一样的后缀名称,不一样环境配置一目了然。.net
最后在根配置文件,也就是application.properties中添加 spring.profiles.active=dev来指定启用哪一个配置,好比这里的dev就对应application-dev.properties,也就是咱们约定的开发环境配置。
那若是application.properties中和application-dev.properties都有相同的配置属性,结果如何呢?
答案是,spring.profiles.active对应了哪一个就是哪一个生效,除非那个配置文件中没有定义的属性,才会被application.properties中定义的覆盖,若是两个文件中都没有,则沿用springboot默认设置。
另外,附带提一下,springboot配置文件还有一种yaml格式,好比上述的application.properties能够命名为application.yml,做用彻底相同,只不过yaml文件是用树形结构来编写属性,就像这样:
而当项目中同时存在application.properties和application.yml时,起做用的是application.properties。 同一目录下,properties配置优先级 高于 YAML配置优先级。
**使用建议**
一、尽可能统一使用一种格式的配置文件,尽可能不要两种格式混用。
二、properties虽然传统并且好用,但官方更推荐用yaml格式,由于树形结构可读性更强,这也是不少编程语言的趋势。
(yaml的编写语法和规范,后续会继续谈到)
三、通常状况下,咱们都会放在resource根目录下,也能够放在resource/config目录下,这种状况下,优先级最高的是resource/config中的配置文件,这也是官方推荐的方式。所以,建议你们将springboot自己的配置文件放在resource/config目录下。
最后,附上完整的配置参数清单,须要修改默认的哪些设置,对照这个清单上找到,而后application文件中覆盖默认属性接口。springboot的这些属性不少是要另外在pom中添加相关的starter才能使用这些功能和参数定制。
定制参数列表:https://blog.csdn.net/baidu_38083619/article/details/89893053