我使用Spring Boot创建了一个Spring Web项目。 想了解一下测试的做法。我需要一个内存嵌入式数据库说hsql或h2用于初始schema.sql的junits。 在主应用程序上,数据库可以说是mysql或oracle
在非Spring Boot项目中,我们通常会有一个单独的applicationcontext.xml,它由Web应用程序引用并进行测试,我们将使用applicationContext-text.xml
现在,在Spring启动时,所有内容都是自动创建的,而Spring Boot也是如此。想知道我如何为应用程序设置一个嵌入式内存数据库和一个像MySQL这样的外部数据库。
我能想到的一个解决方案是使用Profiles。使用2个属性文件application.properties和application-test.properties。并为我的junits使用测试配置文件。
关于我应采取的方法的任何建议。
答案 0 :(得分:40)
确实,个人资料是推荐的方法。我要做的可能是将内存中的实现设置为“默认”配置文件(它是无害的,从某种意义上说,你永远不会更改任何真实数据,因此最好将其作为默认设置,以防有人意外地将其运行到真实数据库中)。就个人而言,我更喜欢将所有外部配置放在一个application.yml
文件中,但这完全取决于您。在外部配置中,您需要提供有效的驱动程序类和URL,例如
spring:
datasource:
driverClassName: org.h2.Driver
url: jdbc:h2:mem:test;MODE=PostgreSQL
schema: classpath:/schema.sql
---
spring:
profiles: local
datasource:
url: jdbc:postgresql://localhost/test
username: root
password: changeme
driverClassName: org.postgresql.Driver
schema:
(注意H2有一个postgres兼容模式,所以它非常适合作为postgres的补充。)