Java学习笔记-配置文件
基于SpringBoot的Java学习笔记-配置文件
参考:配置文件
配置文件
Spring Boot的默认配置文件在:src/main/resources/application.properties
关于Spring Boot应用的配置内容都可以集中在该文件中了,根据我们引入的不同Starter模块,可以在这里定义诸如:容器端口名、数据库链接信息、日志级别等各种配置信息。比如,我们需要自定义web模块的服务端口号,可以在application.properties
中添加server.port=8888
来指定服务端口为8888,也可以通过spring.application.name=hello
来指定应用名(该名字在Spring Cloud应用中会被注册为服务名)。
也可以使用yaml文件来配置。
如:
server: |
对应的application.properties文件:
server.port=8888 |
自定义参数
在配置文件中可以定义一些自定义参数,如
book.name=Spring Boot 2.x |
在Java代码中可以通过@Value
注解来获取配置文件中的参数
|
还可以使用随机数
my.secret=${random.value} |
命令行参数
在启动应用时,可以通过命令行参数来覆盖配置文件中的参数
java -jar myapp.jar --server.port=8888 |
--
后面的参数会覆盖配置文件中的参数。
多环境配置
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties
的格式,其中{profile}
对应你的环境标识,比如:
application-dev.properties
:开发环境application-test.properties
:测试环境application-prod.properties
:生产环境application.properties
:默认环境
在application.properties
中通过spring.profiles.active
来指定当前环境,如:
spring.profiles.active=dev |
配置文件加载顺序
Spring Boot会按照如下顺序加载配置文件:
- 命令行中传入的参数。
- SPRING_APPLICATION_JSON中的属性。SPRING_APPLICATION_JSON是以JSON格式配置在系统环境变量中的内容。
- java:comp/env中的JNDI属性。
- Java的系统属性,可以通过System.getProperties()获得的内容。
- 操作系统的环境变量
- 通过random.*配置的随机属性
- 位于当前应用jar包之外,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件
- 位于当前应用jar包之内,针对不同{profile}环境的配置文件内容,例如:application-{profile}.properties或是YAML定义的配置文件
- 位于当前应用jar包之外的application.properties和YAML配置内容
- 位于当前应用jar包之内的application.properties和YAML配置内容
- 在@Configuration注解修改的类中,通过@PropertySource注解定义的属性
- 应用默认属性,使用SpringApplication.setDefaultProperties定义的内容