首页 > 解决方案 > 如何使用 spring boot + .yaml 创建配置文件?

问题描述

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

在每个文件中,我都有用于开发机器和测试的配置。像这样开始:

-Dspring.profiles.active=local

但是在新的 spring boot 项目中,我使用.yaml配置文件。而且我不明白如何使用profileswith .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属性

标签: javaspring-bootyaml

解决方案


  1. 在那里创建application.yaml和定义所有默认属性。
  2. 创建application-local.yaml和覆盖配置文件所需的local属性。
  3. 创建application-test.yaml和覆盖配置文件所需的test属性。
  4. spring.profiles.active通过将其作为系统属性 ( for -D)传递java或在application.yaml.

当您使用 运行应用程序时{PROFILE},Spring 将application-{PROFILE}.yamlapplication.yaml.


推荐阅读