spring-boot 执行器刷新和内存数据库

Posted

技术标签:

【中文标题】spring-boot 执行器刷新和内存数据库【英文标题】:spring-boot actuator refresh and in memory db 【发布时间】:2019-06-10 14:47:03 【问题描述】:

有没有办法以某种方式配置 spring-boot (2.1.1) 执行器刷新或 hikari/da​​tasource,以便它重新执行负责创建内存数据库(例如 h2)的逻辑? 在 /actuator/refresh 之后的那一刻,我没有以前创建的表(hbm2ddl:create-drop 或 hbm2ddl:create)了。

【问题讨论】:

【参考方案1】:

您的实现没有示例代码。 但是您的问题似乎不是问题,因为这是 In-Memory Dbs 应该如何工作的。 这些 Dbs(H2,Hsql) 用于测试,而不是用于生产,但如果您需要一些小数据,那么这些绝对没问题。 另外,(hbm2ddl: create-drop or hbm2ddl: create)

在这里,它总是会在服务重新启动后重新创建数据库。 将其更改为 (hbm2ddl: update) 语法可能不正确

还考虑到您正在使用休眠

【讨论】:

【参考方案2】:

我认为执行器用于不同的事情,主要是为了了解运行时中微服务实例中发生的事情。

/actuator/refresh

确实使用 Refresh Scope 管理 bean,如果配置发生更改(例如在 Spring Boot 云配置服务中),它只是重新创建它们而不重新创建整个应用程序上下文(这可能是一项昂贵的操作)。

所以它与 H2 DataSource 的生命周期无关,正如我们的同事 Shubham 所说,它确实主要用于测试,这让问题更加混乱:)

【讨论】:

以上是关于spring-boot 执行器刷新和内存数据库的主要内容,如果未能解决你的问题,请参考以下文章

内存数据库spring-boot中的h2

数据库日志文件和内存刷新机制

Spring Boot JWT - 如何实现刷新令牌和注销 REST-API

刷新手机的内存,即重新读取手机内存,以便识别内存文件

带有 spring-boot 和 spring-security 的 JWT

Linux之SWAP分区的信息查询与手动刷新