春季属性:yml vs属性文件语法,不可互换吗?

时间:2018-12-23 14:40:34

标签: spring spring-boot properties yaml liquibase

我一直在使用这里提到的一些弹簧特性:application-properties

尤其是liquibase属性。

在我的yml文件中,如果我使用yml的树状语法:

spring:
  liquibase:
    change-log: classpath:/db/changelog/db.changelog-master-test-h2.yml

Spring不会获取该值。 (更具体地说,Spring的org.springframework.boot.autoconfigure.liquibase.LiquibaseProperties类不会获取该值)

但是,如果我使用“属性文件”语法:

spring.liquibase.change-log: my-path

Spring确实获取了该值。

给我的印象是,在Spring框架中,这两种语法是可以互换的,但显然不是。

这是怎么回事?

注意:我已经尝试过这些变体。

这些作品:

spring.liquibase.change-log: classpath:/db/changelog/db.changelog-master-test-h2.yml

spring.liquibase.changeLog: classpath:/db/changelog/db.changelog-master-test-h2.yml

这些无效:

spring:
  liquibase:
    change-log: classpath:/db/changelog/db.changelog-master-test-h2.yml

spring:
  liquibase:
    changeLog: classpath:/db/changelog/db.changelog-master-test-h2.yml

我的应用程序的完整内容。yml

---

spring.profile: h2


spring:
  datasource:
    url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
    driver-class-name: org.h2.Driver
  jpa:
    database: h2
    hibernate:
      ddl-auto: none
    properties:
      hibernate:
        dialect: org.hibernate.dialect.H2Dialect
        format_sql: true
    show-sql: true
  liquibase:
    enabled: true
    # change-log: classpath:/db/changelog/db.changelog-master-test-h2.yaml
    url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
    default-schema: PUBLIC

spring.liquibase.change-log: classpath:/db/changelog/db.changelog-master-test-h2.yaml

1 个答案:

答案 0 :(得分:-1)

如果您使用的是yaml中的属性,则需要添加双引号:

spring:
  liquibase:
    change-log: "classpath:/db/changelog/db.changelog-master-test-h2.yaml"

spring:
  liquibase:
    changeLog: "classpath:/db/changelog/db.changelog-master-test-h2.yaml"