1.配置文件处理器引入
SpringBoot配置文件首先必须要引入配置文件处理器,才能在实体类注入的时候自动加载配置文件。
<!-- 引入配置文件处理器,配置文件进行绑定就会提示--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency></dependencies>
2.内部配置文件
SpringBoot启动会扫描以下位置的application.properties/yml文件作为SpringBoot默认的全局配置文件。
- file:./config/
- file:./
- classpath:/config
- classpath:/
classpath是java和resources下,file:./是指src下的,优先级从上到下,若有重复名称的配置文件,则优先级高的配置内容覆盖优先级低的配置内容。所以会有所谓的“互补配置”。
3.外部配置文件
2.1 server.config.location
可以通过server.config.location参数来更改配置文件的位置,在项目打包好以后,使用命令行参数的形式,启动项目的时候指定配置文件的新位置;指定的配置文件和默认的配置文件将共同起作用形成互补配置。
这个方法经常在运维的时候使用,当我们项目已经打包,但是又需要更改新的配置的时候,我们可以在服务器的指定位置编写好新的配置文件,在启动项目的时候设置新的配置文件的路径,这样可以实现快速修改配置的目的。
语法:--spring.config.location=Path(放在jar包启动命令的后面) --server.servlet.port=8081(直接指定多个参数也可以空格隔开即可)
当jar包和配置文件放在同一目录下时,启动炸包不需要指定配置文件,会直接加载同一目录下的配置文件,优先覆盖项目内配置文件的参数。
优先级顺序是:
优先加载项目外和项目内部的带profile名的配置文件
加载项目外和项目类的不带profile名的配置文件
2.2 @Configuration注解类上的@PropertySource
ioc类都可以进行@PropertySource的指定配置,但是要注意区分,实体类引用配置文件必须有@ConfigurationProperties(prefix='')来指定前缀,它的功能是用于数据注入,而我们的Configuration注解类是为了添加必要的键值对。放在主运行类所在目录下,它会扫描之,加入配置序列。
2.3 SpringApplication.setDefaultProperties
指定默认属性