启动时如何在特定数据库上将 Spring 引导应用程序配置为 运行

How to configure Spring Boot Application to run on a specific database when launching

我有一个 Spring 使用 Spring Boot 开发的 MVC 应用程序。顺便说一句,此应用程序仅用于学习目的。

默认情况下,应用程序启动并使用 MySQL 数据库。对于单元和集成测试,我使用内存中的 H2 数据库,它运行良好。

为此,我有两个 application.properties。一个在/src/main/resources/application.properties.

spring.datasource.driver-class-name = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost/myDatabase
spring.datasource.username = root
spring.datasource.password = mysql

spring.thymeleaf.mode=LEGACYHTML5
spring.thymeleaf.cache=false

另一个application.properties在/src/test/resources/application.properties

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"
spring.datasource.username=sa
spring.datasource.password=sa

现在,我必须使用 Selenium 进行自动化网站测试,并且我不想让我的 MySQL 数据库填充测试数据。

我以前在 Spring 中没有这样做过,但我希望我的应用程序像这样工作:

如何使用 application.properties 或其他配置在 Spring 引导应用程序中执行此操作?

Spring 应该会自动为您执行此操作。 运行 application.properties 从 src/test/resources 当你 运行 宁测试因为 spring 运行s 与 "test" 配置文件。如果没有,请在您的测试 class 上添加 @ActiveProfiles("test") 注释(我的意思是您进行测试的 class,而不是正在测试的 class)。如果这仍然不起作用,您可以将 src/test/resources/application.properties 重命名为 src/test/resources/application-test.properties 和 select 您在 [=28] 中的个人资料=] 配置(有一个名为 'profile' 的字段)。 Reference and more info.

  1. 创建一个名为 application-test.properties 的单独属性文件并将其放在 /src/test/resources 下。测试数据库属性(或任何其他测试特定属性)应该放在这里。
  2. 在您的测试 class 之上,使用此注释 @ActiveProfiles("test")

    @ActiveProfiles("test")
    public class MyTest {
       ...
    }