如何在 Spring Boot 库中启用 H2 控制台?

Posted

技术标签:

【中文标题】如何在 Spring Boot 库中启用 H2 控制台?【英文标题】:How do I enable H2 Console in a Spring Boot Library? 【发布时间】:2022-01-18 21:51:12 【问题描述】:

我有一个非 Web Spring Boot 库,它具有持久性实体,Web 应用程序客户端将使用这些实体与数据库进行通信。当我创建我的测试时,我在我的 spring 集成测试中使用@SpringBootTest,从而使用我的库模拟一个 spring boot 应用程序。

spring.h2.console.enabled 设置为true 时,我认为我可以通过集成测试进行调试并启用H2 控制台,这样我就可以通过转到http://localhost:8080/h2-console 来查看数据,但是控制台无法在我的浏览器中加载。

我怀疑这与以下事实有关,因为我的库不是 web-mvc 库,它不会自动配置 H2 WebServlet,但我想知道提供该属性是否足以spring boot 自动配置servlet。

有谁知道提供 H2 属性是否足够?或者我需要做些什么来启用 H2 WebServlet?

【问题讨论】:

也许这有帮助:***.com/questions/50374545/… 【参考方案1】:

通过在@SpringBootTest 注释中添加webEnvironment 条目,我设法使其工作(在某种程度上)。这允许注册 H2 WebServlet。我说“有点”的原因是因为每当我调试测试时,线程似乎暂停,并且在我的浏览器(http://localhost:8080/h2-console)中请求它时,我从 H2 获得了非常延迟的响应时间。我的 H2 数据库非常小(500 KB),所以我认为这与嵌入的服务器有关并以某种方式与测试相关联?

【讨论】:

以上是关于如何在 Spring Boot 库中启用 H2 控制台?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Spring Boot 启动器拆分库中的代码

如何在使用 DataJpaTest 的 Spring Boot 2.0 测试中访问 H2 控制台

Spring Boot 从类路径加载 H2 db 文件

如何从另一个 Spring Boot 应用程序访问一个 Spring Boot 应用程序的内存 H2 数据库

如何在spring boot中创建H2+flyway测试数据库?

如何跨多个 Spring Boot 应用程序共享 H2 内存数据库?