mysql - 如何在不依赖数据库的情况下使用 Hibernate 5 (JPA) 启动 Spring Boot Application 2?
问题描述
首先:这不是一个重复的问题。
4.5 多年前,另一位用户(在 Stackoverflow.com 上)写道,他有一个要求,即即使数据库关闭,他的 Spring Boot 应用程序也应该能够启动。他将 Spring Boot Application 1 与 Hibernate 4 一起使用。我现在对 Spring Boot Application 2 与 Hibernate 5 有同样的问题。我尝试将选中的答案应用于 Hibernate 4,但这不适用于我的应用程序。
是否仍然可以在不依赖数据库的情况下启动它?这是(编辑的)Hibernate 5 -properties(application.yml
):
spring:
datasource:
url: jdbc:mysql://localhost/schema?serverTimezone=UTC
username: root
password: root
continue-on-error: true
initialization-mode: never
tomcat:
initial-size: 0
time-between-eviction-runs-millis: 5000
min-evictable-idle-time-millis: 5000
min-idle: 0
jpa:
show-sql: true
hibernate:
ddl-auto: none
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5Dialect
hbm2ddl:
auto: none
temp:
use_jdbc_metadata_defaults: false
我的问题已被标记为“可能重复”。提供的可能答案根本不是可能的答案。正如我所写,我被要求(这是一项要求)不要使用任何其他数据库,即使是 H2。所以,问题出在 EntityManagerFactory Bean(连同数据源);如果创建失败,应用程序将无法启动。而已。
解决方案
我知道这个问题已经很老了,但我以这种方式解决了这个问题(对于与 Hikari 一起工作的人)。
我将这两行添加到application.properties
:
spring.datasource.hikari.initialization-fail-timeout=-1
spring.datasource.hikari.connection-timeout=0
那么第一行对我来说很明显,有 Hikari 的文档(https://github.com/brettwooldridge/HikariCP)。写到第二行允许的值在 250-* 之间。但是我使用了零值,它开始按我的预期工作。
推荐阅读
- r - 将不带引号的函数参数传递给 data.table 中的 i
- node.js - 当网络抓取/测试时,我如何通过通知弹出窗口?
- python - 涉及小部件时如何延迟功能的一部分?
- firebase-realtime-database - Firebase Cloud Functions,实时数据库成本
- python-3.x - Scrapy Crawl ValueError
- python - 使用 datetime.strptime 将字符串转换为日期时间时出错
- dialogflow-es - 是否可以在 Dialogflow Facebook 快速回复中删除标题并仅打印快速回复?
- html - 将 HREFLANG 标签关联到当前页面
- python - 在 python 块中定义函数,然后从 R 块中调用它
- node.js - Keycloak - Access-Control-Allow-Origin 标头丢失