如何使用 spring boot + .yaml 创建配置文件?
Posted
技术标签:
【中文标题】如何使用 spring boot + .yaml 创建配置文件?【英文标题】:How can I create profiles with spring boot + .yaml? 【发布时间】:2019-03-08 16:23:45 【问题描述】:我有带有 2 个属性文件的 Spring Boot 服务器:application-local.properties
和 application-test.properties
在每个文件中,我都有用于开发机器和测试的配置。像这样开始:
-Dspring.profiles.active=local
但在新的 Spring Boot 项目中,我使用 .yaml
配置文件。而且我不明白如何将profiles
与.yaml
一起使用。我尝试阅读文档,但一无所知。你能一步一步解释该怎么做吗?
我需要两个文件?
application-local.yaml
和 application-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
【讨论】:
以上是关于如何使用 spring boot + .yaml 创建配置文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 YAML 文件在 Spring Boot 中配置 Swagger?