spring boot yaml profile name resolution

时间:2016-06-08 14:42:34

标签: spring spring-boot yaml

我有多模块maven项目,其中我有一个共同的部分,我想在应用程序之间共享。

在通用模块中,我正在定义liquibase和db connection的配置。为此,我在application.yaml中有2个profile-prod和common-dev。

spring:
  profiles: common-prod
  # POSTGRE
  datasource:
    url: ${DATABASE_URL:jdbc:postgresql://localhost:5432/dbname}
    driver-class-name: org.postgresql.Driver
    username: pguser
    password: pguser
  jpa:
    database-platform: org.hibernate.dialect.PostgreSQLDialect
    hibernate:
      ddl-auto: none
    properties:
      hibernate.default_schema: public
#LIQUIBASE
liquibase:
  enabled: true
  change-log: /db/changelog/db-changelog-master.xml
  drop-first: false
---
spring:
  profiles: common-dev
  # POSTGRE
  datasource:
    url: ${DATABASE_URL:jdbc:postgresql://localhost:5432/dbname-dev}
    username: pguserdev
    password: pguserdev
#LIQUIBASE
liquibase:
  enabled: true
  drop-first: true

现在在Web应用程序中我想定义一些其他属性。但是当我将它们包含在application.yaml(在web模块中)时,我认为它会覆盖来自common模块的application.yaml。 所以我需要

  1. 将application.yaml从common重命名为application-common.yaml
  2. 将应用程序中的application.yaml重命名为application-web.yaml
  3. 如果我重命名公共模块的yaml文件,我可以从这个文件中引用配置文件吗?例如-Dspring.profiles.active = common-common-prod或者我需要将这些配置文件分开来分隔yaml文件?

    如果我将web模块配置文件重命名为application-web.yaml,我必须始终包含Web配置文件。我可以忍受这种情况,但在application.yaml中包含配置文件会更简单,并且不关心命令行参数。

0 个答案:

没有答案