Spring基于范围的默认配置文件选择
Posted
技术标签:
【中文标题】Spring基于范围的默认配置文件选择【英文标题】:Spring Default Profile Selection Based on Scope 【发布时间】:2015-10-19 11:55:15 【问题描述】:我的应用程序有一个嵌入式数据库作为“测试”依赖项(Maven 测试),但是当您想在没有任何 -D 开关的情况下启动应用程序时,这会导致异常,因为在 application.yml 中声明了 jdbc 驱动程序(请参阅下面)。
是否可以根据范围(即运行时或测试)设置数据源?或者更好的是,您可以在没有任何 -D 开关的情况下更改默认配置文件(例如 -Dspring.profiles.active=test)吗?
这可能看起来微不足道,但是对于我们的团队来说,您可以在 IDE 中成功运行测试感到困惑,但是当您尝试“运行应用程序”时它会失败,除非您设置 -D 开关。
datasource:
url: jdbc:h2
spring:
profiles: profile1
datasource:
url: jdbc:postgresql
【问题讨论】:
【参考方案1】:如果您仅将嵌入式数据库用于测试,那么您可以在文件夹src/test/resources/
中放置一个 application.properties(或 .yml),您可以在其中放置所有用于测试运行的属性。至少这对我有用。因此,您无需将生产属性放入配置文件中,它们会在您运行应用程序时使用。
【讨论】:
【参考方案2】:将application.yml
移动到src/test/resources/
您可以使用
设置默认配置文件
datasource.url=jdbc:h2 =>
datasource:
url: jdbc:h2
---
spring:
profiles: profile1
datasource:
url: jdbc:postgresql
【讨论】:
我需要根据我是否正在运行测试来设置默认配置文件,不幸的是这不起作用。你知道根据我是在运行测试还是正常运行来设置配置文件的方法吗?以上是关于Spring基于范围的默认配置文件选择的主要内容,如果未能解决你的问题,请参考以下文章
当在命令行中未指定配置文件时,Spring Boot 集成测试无法获取默认配置文件并引发错误
黑马_13 Spring Boot:04.spring boot 配置文件
Spring -- Spring配置文件详解(Bean标签的基本配置(id,class)/ 范围配置 / 不同范围时的对象的创建时期 / Bean生命周期配置(生命周期方法) )