如何使用Spring Boot + .yaml创建配置文件?

16

我有一个带有两个属性文件的Spring Boot服务器:application-local.propertiesapplication-test.properties

每个文件都包含开发环境和测试环境的配置。可以这样启动:

-Dspring.profiles.active=local

但是在新的Spring Boot项目中,我使用 .yaml 配置文件。我不明白如何使用 profiles.yaml。我尝试阅读文档,但一无所获。你能否逐步解释一下该怎么做?

我需要两个文件吗?

application-local.yamlapplication-test.yaml

还是需要写在一个application.yaml文件中?如果是一个文件,如何分隔配置项?这是我的配置:

server:
  path: ***
  port: ***

cxf:
  path: ***

spring.datasource:
  type: com.zaxxer.hikari.HikariDataSource
  driver-class-name: oracle.jdbc.OracleDriver
  url: ***
  username: ***
  password: ***
  hikari:
    minimumIdle: 5
    maximumPoolSize: 20
    idleTimeout: 30000
    poolName: SpringBootJPAHikariCP
    maxLifetime: 2000000
    connectionTimeout: 30000
    connection-test-query: SELECT 1 FROM DUAL

spring.jpa:
  show-sql: false
  database-platform: org.hibernate.dialect.Oracle10gDialect
  properties.hibernate.jdbc.batch_size: 30
  properties.hibernate.cache.use_second_level_cache: false
  hibernate:
    ddl-auto: validate


spring.cache:
  ehcache:
    config: classpath:ehcache.xml

#app configs
my:
  messages-max-count: 5
  messages-delay: 100
  schedulers-charge-delay: 100
  client:
    first-server-address: ***
    second-server-address: ***
    last-server-address: ***
  enabled-client: FirstClient

我想创建一个测试档案并更改数据库的URL(或更改为PostgreSQL),更改maximumPoolSize属性。

2个回答

22
  1. 创建application.yaml并定义所有默认属性。
  2. 创建application-local.yaml,覆盖需要适用于local配置文件的属性。
  3. 创建application-test.yaml,覆盖需要适用于test配置文件的属性。
  4. 通过将其作为系统属性(-D 用于 java)传递或在application.yaml中定义,设置spring.profiles.active

当使用{PROFILE}运行应用程序时,Spring会在application.yaml之后解析application-{PROFILE}.yaml


1
如果我在application-{PROFILE}.yaml中覆盖了属性,我需要从基础的application.yaml中删除这个属性吗? - ip696
1
@ip696,你可以这样做,但不是必须的。 - Andrew Tobilko
1
假设您决定在没有配置文件的情况下运行应用程序,由于缺少属性,启动可能会失败。 - Andrew Tobilko
@ip696,我不确定bootRun是否支持D选项,你需要使用java -jar -Dspring.profiles.active=test app.jar - Andrew Tobilko
1
@ip696 将 spring.profiles.active: test(使用正确的格式)添加到 application.yaml 中,在运行时不要传递任何内容。 - Andrew Tobilko
显示剩余2条评论

5

是的,即使只有一个文件,您也可以创建多个配置文件。 配置文件以 3 个短横线(---)分隔。

logging:
  level:
    .: error
    org.springframework: ERROR

spring:
  profiles:
    active: "dev"
  main:
    banner-mode: "off"

server:
  port: 8085

---

spring:
  profiles: dev

---

spring:
  profiles: prod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接