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

时间:2018-10-03 12:26:48

标签: java spring-boot yaml

我有一个带有2个属性文件的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属性

3 个答案:

答案 0 :(得分:3)

  1. 创建application.yaml并在那里定义所有默认属性。
  2. 创建application-local.yaml并覆盖local配置文件所需的属性。
  3. 创建application-test.yaml并覆盖test配置文件所需的属性。
  4. 通过将spring.profiles.active设置为系统属性(对于-D使用java或在application.yaml内定义它来设置。{li>

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

答案 1 :(得分:0)

我的理解是yaml的支持与Spring中properties的支持级别不同。 您可以使用一个带有---的yaml标记并在每个部分中设置spring.profiles属性来创建一个文件并将其分成多个配置文件。有关更多信息,请参见The Documentation

答案 2 :(得分:0)

是的,即使是单个文件,您也可以创建多个配置文件 配置文件用3个DASH( ---

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

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

server:
  port: 8085

---

spring:
  profiles: dev

---

spring:
  profiles: prod