java - Spring基于范围的默认配置文件选择

标签 java maven spring-boot

我的应用程序有一个嵌入式数据库作为“测试”依赖项(Maven 测试),但是当您想要在没有任何 -D 开关的情况下启动应用程序时,这会导致异常,因为 jdbc 驱动程序是在 application.yml 中声明的(请参阅如下)。

是否可以根据范围(即运行时或测试)设置数据源?或者更好的是,您可以在不使用任何 -D 开关的情况下更改默认配置文件(例如 -Dspring.profiles.active=test)吗?

这可能看起来微不足道,但令我们团队感到困惑的是,您可以在 IDE 中成功运行测试,但当您尝试“运行应用程序”时,除非您设置 -D 开关,否则它会失败。

datasource:
  url: jdbc:h2

spring:
  profiles: profile1

datasource:
  url: jdbc:postgresql

最佳答案

如果您仅将嵌入式数据库用于测试,那么您可以将 application.properties (或 .yml)放置在文件夹 src/test/resources/ 中,您将在其中放置用于测试运行的所有属性至少这对我有用。因此,您无需将生产属性放入配置文件中,它们会在您运行应用程序时使用。

关于java - Spring基于范围的默认配置文件选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33213746/

相关文章:

java - mvn 任务失败时如何使 Ant 构建失败?

spring-boot - 向 Eureka 服务器注册服务时出错

java - GraphQL api 使用 Spring Boot Resttemplate 导致 {"errors":[ {"message" :"No query string was present"}]} always

java - 用于派生查询的 Spring jpa 拦截器

java - 小文件的 Spark 重新分区数据

java - robotsium 测试项目在 eclipse 中构建,但不在 ant 中构建

java - 从 Spring Boot 中排除 Maven 依赖项

java - @Service 注解的 bean 未被 SpringBootApplication 拾取

linux - 无法在 rackspace 云服务器上的 ubuntu 上运行 jbossas7

java - 为什么服务提供者会返回 SOAP Webservice 错误?