【问题标题】:spring-boot actuator refresh and in memory dbspring-boot 执行器刷新和内存数据库
【发布时间】:2019-06-10 14:47:03
【问题描述】:
有没有办法以某种方式配置 spring-boot (2.1.1) 执行器刷新或 hikari/datasource,以便它重新执行负责创建内存数据库(例如 h2)的逻辑?
在 /actuator/refresh 之后的那一刻,我没有以前创建的表(hbm2ddl:create-drop 或 hbm2ddl:create)了。
【问题讨论】:
标签:
spring-boot
spring-cloud
spring-boot-actuator
actuator
【解决方案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 所说,它确实主要用于测试,这让问题更加混乱:)