如何使用 spring boot + .yaml 创建配置文件?

     2023-02-26     45

关键词:

【中文标题】如何使用 spring boot + .yaml 创建配置文件?【英文标题】:How can I create profiles with spring boot + .yaml? 【发布时间】:2019-03-08 16:23:45 【问题描述】:

我有带有 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 属性

【问题讨论】:

【参考方案1】:
    创建application.yaml 并在那里定义所有默认属性。 创建application-local.yaml 并覆盖local 配置文件所需的属性。 创建application-test.yaml 并覆盖test 配置文件所需的属性。 通过将spring.profiles.active 作为系统属性传递(-D 表示java)或在application.yaml 中定义它来设置spring.profiles.active

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

【讨论】:

如果我覆盖application-PROFILE.yaml 中的属性,我是否需要从基础application.yaml 中删除此属性? @ip696 你可以,但你不必这样做。 @ip696 假设您决定在没有配置文件的情况下运行应用程序,启动可能会由于缺少属性而失败。 我尝试使用 -Dspring.profiles.active=test (16:01:49: Executing task 'bootRun -Dspring.profiles.active=test'...) 运行应用程序,但春天说:Application: [] No active profile set, falling back to default profiles: default 我有 3 个文件:application.yaml、application-dev.yaml、application-test.yaml @ip696 将spring.profiles.active: test(格式正确)添加到application.yaml,运行时不要传递任何内容【参考方案2】:

是的,即使使用单个文件,您也可以创建多个配置文件 个人资料以 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

【讨论】:

如何使用 YAML 文件在 Spring Boot 中配置 Swagger?

】如何使用YAML文件在SpringBoot中配置Swagger?【英文标题】:HowtoconfigureSwaggerinSpringBootusingYAMLfile?【发布时间】:2018-11-2912:41:31【问题描述】:我的Swagger配置有问题。现在Swagger正在扫描包并创建漂亮的文档,但我想使用我的YAML(... 查看详情

Spring Boot 使用 Yaml 而不是属性文件

】SpringBoot使用Yaml而不是属性文件【英文标题】:SpringBootusingYamlinsteadofpropertiesfile【发布时间】:2017-01-2107:08:06【问题描述】:我使用SpringBoot。我想使用YAML而不是属性来编写我的配置。由于我使用spring-boot-starter,SnakeYAML库已经... 查看详情

如何在 spring-boot 配置中加载 application.yaml 配置以进行硒测试

】如何在spring-boot配置中加载application.yaml配置以进行硒测试【英文标题】:Howtoloadapplication.yamlconfiginspring-bootconfigurationforseleniumtesting【发布时间】:2014-02-2408:21:24【问题描述】:我正在尝试对我的spring-boot应用程序运行selenium测... 查看详情

如何防止 Spring Boot 解析带点的 YAML 键

】如何防止SpringBoot解析带点的YAML键【英文标题】:HowtopreventSpringBootfromparsingYAMLkeyswithdots【发布时间】:2014-06-1413:42:56【问题描述】:我有一个带有属性映射的YAML配置文件:properties:a.b.c:1Boot会将其解析为:a:b:c:1但是,我想要的... 查看详情

如何在 Spring Boot Yaml 中激活 Profile

】如何在SpringBootYaml中激活Profile【英文标题】:HowtoactivateProfileinSpringBootYaml【发布时间】:2021-10-1521:51:05【问题描述】:我的Springboot(2.4.5)应用程序的以下应用程序yaml有两个配置文件。弹簧:个人资料:开发人员弹簧:个人资料... 查看详情

Spring Boot Mongodb .yaml 配置

...iguration【发布时间】:2019-10-1517:24:21【问题描述】:当我使用MySQL和hibernate进行SpringBoot时,我在.yml文件中使用以下配置spring:datasource:url:jdbc:mysql://localhost/userName?zeroDateTimeBehavior 查看详情

Spring Boot:使用 @Value 或 @ConfigurationProperties 从 yaml 读取列表

】SpringBoot:使用@Value或@ConfigurationProperties从yaml读取列表【英文标题】:SpringBoot:readlistfromyamlusing@Valueor@ConfigurationProperties【发布时间】:2016-01-2623:26:26【问题描述】:我想从yaml文件(application.yml)中读取主机列表,该文件如下所示... 查看详情

Spring Boot - 加载多个 YAML 文件

...时间】:2016-10-2419:02:45【问题描述】:我正在为我的项目使用Springboot,并尝试加载yaml文件,以便我可以使用项目中文件中的数据。例如,我的application.yml中有如下内容。currency:code:840:2484:2999:0在我从application.yml读取内 查看详情

Spring Boot:使用 yaml 中配置的 Maven 属性

】SpringBoot:使用yaml中配置的Maven属性【英文标题】:SpringBoot:useofMavenpropertiesconfiguredinyaml【发布时间】:2017-11-0712:31:05【问题描述】:我正在尝试从Maven中提取一些属性并在我的应用程序启动时打印它们。我正在使用SpringBoot,因... 查看详情

使用 Gradle 管理 Spring Boot 配置文件

】使用Gradle管理SpringBoot配置文件【英文标题】:ManageSpringBootProfileswithGradle【发布时间】:2021-05-0900:57:46【问题描述】:我有一个由Gradle管理的SpringBoot应用程序。到目前为止做了什么:已创建application.yaml、application-dev.yaml和applic... 查看详情

通过环境变量覆盖 Spring Boot yaml 属性

...ronmentvariable【发布时间】:2022-01-1223:25:38【问题描述】:使用SpringBoot2.6.1,如果我有一个application.properties文件,看起来像:spring.datasource.url="jdbc://blahblah"我可以在运行时使用名为 查看详情

Spring Boot YAML 绑定:绑定属性失败

...【发布时间】:2019-05-1216:35:27【问题描述】:我正在尝试使用SpringBoot2.0.5.RELEASE将generator.yaml文件与GeneratorConfig类型的对象绑定:generator.yaml:entry:name:"node-1"expected 查看详情

Spring Boot YAML 配置和列表

...必须在SpringBoot的YAML配置文件中集成一个列表,但不知道如何继续。我已经看到了其他相关的问题:SpringBootyamlconfigurationforalistofstrings也有同样的问题。我应用了解决方案并解决了问题,发现解决方案有点棘手。有没 查看详情

带有密钥 URL 的 Spring Boot YAML 配置不再使用版本 2 正确加载

】带有密钥URL的SpringBootYAML配置不再使用版本2正确加载【英文标题】:SpringBootYAMLconfigurationwithURLinkeynolongerloadscorrectlywithversion2【发布时间】:2018-11-2708:43:33【问题描述】:我正在将我的应用程序从SpringBoot1.5迁移到2.0,并且YAML属... 查看详情

Spring Boot - 从 YAML 文件中注入地图

...么:application.ymlalias:name:titledesc:descriptioncontent:body我尝试使用@Value注解:NamingService. 查看详情

Spring boot YAML Config未读取所有值

...问题描述】:我正在尝试在我的SpringBoot1.5.1项目中设置和使用YAML作为配置文件。我的YAML文件如下所示:hue:user:cdKjsOQIRY8hqweAasdmx-WMsnip:"http://192.168.1.69"s 查看详情

将 YAML 列表映射到 Spring Boot 中的对象列表

...,除了我想将我的对象中至少一个字段的标识符与YAML中使用的相应键名不同。例如:YAML文件:config:g 查看详情

基于spring boot读取配置yaml hashmap

...】:2020-05-3118:54:56【问题描述】:是否可以在SpringBoot中使用@configurationproperties读取yaml文件?app:X1:key1:value1key2:value2X2:key1:value3key2:value4X3 查看详情