1.10 微服务配置权重
Spring Boot微服务分别使用了命令行、资源配置文件、Java应用程序系统变量等方式对Spring Boot应用程序进行配置。若项目多次通过不同位置对端口号进行配置,Spring Boot应用程序则会采用工程中权重最高的配置。本节将根据不同的配置信息类型、配置文件类型、配置文件存在位置介绍它们在微服务中所表现的权重效果。
1.10.1 资源配置信息类型的权重
不同配置方式的权重及输入方式如表1-7所示。
表1-7 不同配置方式的权重及输入方式
1.10.2 资源配置文件类型的权重
Spring Boot默认扫描的配置文件分别为application.properties、application.yml、bootstrap.properties、bootstrap.yml。若某个Spring Boot含有多个不同名称配置文件,不同名称的配置文件都对端口号进行配置,Spring Boot应用程序则会采用权限最高的配置。
例如,同时含有application.properties配置文件和bootstrap.yml配置文件,两个文件都写了server.port,将会以application.properties配置文件中的参数为准。不同配置文件的权重及输入方式如表1-8所示。
表1-8 不同配置文件的权重及输入方式
1.10.3 资源配置文件存在位置与权重解读
Spring Boot会在4个位置进行扫描,看看是否有相应的application.properties文件,即资源配置文件将放置在4个位置。Spring Boot扫描不同位置资源配置文件的顺序如表1-9所示。
表1-9 application资源配置文件存在的位置及权重
Spring Boot的扫描机制是若某工程含有多个application.properties文件,则读完第1个位置后不会读第2个位置或更后面的权重位置,即越靠前资源配置文件的权重越高。例如,读完第1个权重的配置文件,将server.port设置为9090后,第2个权重的配置文件的server.port为19090,则以第1个权重为主,最后启动端口为9090。
日常工作中的资源文件大多直接在resources文件夹下直接创建,这也是最合理的方式,工程中大多使用最低的权重来设置资源配置文件,方便应急时进行更改。
application的位置与权重关系如图1-21所示。
图1-21