3.2 多环境启动命令格式
-
带参数启动SpringBoot
java –jar springboot.jar --spring.profiles.active=test
java –jar springboot.jar --server.port=88
java –jar springboot.jar --server.port=88 --spring.profiles.active=test
参数加载优先顺序
2. 外部化配置
Spring Boot 允许您将配置外部化,以便您可以在不同的环境中使用相同的应用程序代码。 您可以使用各种外部配置源,包括 Java 属性文件、YAML 文件、环境变量和命令行参数。
属性值可以使用注解直接注入到你的 bean 中,通过 Spring 的抽象访问,或者通过 绑定到结构化对象。
@Value
Environment
@ConfigurationProperties
Spring Boot 使用一个非常特殊的顺序,旨在允许合理地覆盖值。 后面的属性源可以覆盖前面的属性源中定义的值。 按以下顺序考虑来源:
PropertySource
默认属性(通过设置 指定)。
SpringApplication.setDefaultProperties
@PropertySource类上的注释。 请注意,在刷新应用程序上下文之前,不会将此类属性源添加到 中。 现在为时已晚,无法配置某些属性,例如在刷新开始之前读取的属性。
@Configuration
Environment
logging.*
spring.main.*
配置数据(例如文件)。
application.properties
仅在 中具有属性的 A。
RandomValuePropertySource
random.*
OS 环境变量。
Java 系统属性 ()。
System.getProperties()
中的 JNDI 属性。
java:comp/env
ServletContext
init 参数。
ServletConfig
init 参数。属性来自(嵌入在环境变量或系统属性中的内联 JSON)。
SPRING_APPLICATION_JSON
命令行参数。
properties
属性。 在 @SpringBootTest 和测试注释中可用,用于测试应用程序的特定部分。在测试中@DynamicPropertySource注释。
@TestPropertySource测试上的注释。
devtools 处于活动状态时目录中的 Devtools 全局设置属性。
$HOME/.config/spring-boot
配置数据文件按以下顺序考虑:
打包在 jar 中的应用程序属性(和 YAML 变体)。
application.properties
打包在 jar 中的特定于配置文件的应用程序属性(和 YAML 变体)。
application-{profile}.properties
打包 jar 之外的应用程序属性(和 YAML 变体)。
application.properties
打包的 jar 之外的特定于配置文件的应用程序属性(和 YAML 变体)。
application-{profile}.properties
建议在整个应用程序中坚持使用一种格式。 如果在同一位置同时具有 YAML 格式的配置文件,则优先。 .properties
.properties
如果使用环境变量而不是系统属性,则大多数操作系统不允许使用句点分隔的键名,但可以改用下划线(例如,代替 )。 有关详细信息,请参阅从环境变量绑定。 SPRING_CONFIG_NAME
spring.config.name
如果应用程序在 servlet 容器或应用程序服务器中运行,那么可以使用 JNDI 属性 (in ) 或 servlet 上下文初始化参数来代替环境变量或系统属性。 java:comp/env