在没有数据库依赖的情况下启动 Spring Boot 应用程序
使用使用数据库的 Spring Boot 应用程序时,可能会在数据库不可用时遇到错误令人沮丧。要解决此问题,应将应用程序配置为即使无法访问数据库也能成功启动。
原始错误的原因
初始错误期间遇到的错误尝试在没有数据库的情况下启动 Spring Boot 应用程序源于 Hibernate 及其依赖数据库中的元数据来确定表结构和关系。当数据库不可用时,Hibernate 无法获取必要的元数据,从而导致错误。
解决方案:配置 Spring Boot 和 Hibernate
要解决此问题,在application.yml中配置以下属性file:
spring:
datasource:
continueOnError: true
initialize: false
initialSize: 0
timeBetweenEvictionRunsMillis: 5000
minEvictableIdleTimeMillis: 5000
minIdle: 0
jpa:
show-sql: true
hibernate:
ddl-auto: none
naming_strategy: org.hibernate.cfg.DefaultNamingStrategy
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5Dialect
hbm2ddl:
auto: none
temp:
use_jdbc_metadata_defaults: false
- spring.datasource.continueOnError:此属性告诉 Spring 即使在初始化数据源时出现错误也继续启动应用程序。
- spring.datasource。初始化:该属性指定是否在启动时初始化数据源。将其设置为 false 意味着在实际尝试连接之前不会初始化数据源。
- spring.datasource.initialSize:此属性设置启动时要建立的初始连接数。设置为 0 表示启动时不会建立连接。
- spring.datasource.timeBetweenEvictionRunsMillis:该属性决定数据源检查空闲连接以逐出的频率(以毫秒为单位)。
- spring.datasource.minEvictableIdleTimeMillis:该属性设置空闲连接可以保持的最短时间(以毫秒为单位)
- spring.datasource.minIdle:此属性设置池中保留的最小空闲连接数。
- spring.jpa.hibernate.ddl -auto:此属性设置 Hibernate 对数据库模式执行的操作。将其设置为 none 意味着不应对数据库模式进行任何更改。
- spring.jpa.hibernate.dialect:此属性指定要使用的 Hibernate 方言。使用适当的方言可确保 Hibernate 生成与数据库兼容的 SQL。
- spring.jpa.hibernate.properties.hibernate.temp.use_jdbc_metadata_defaults:此属性指定 Hibernate 是否应使用 JDBC 元数据来确定表结构和关系。将其设置为 false 可防止 Hibernate 依赖数据库,而是使用域类中的映射注释来定义实体。
解决方案的优点
通过实现这些配置,Spring Boot 应用程序:
- 即使数据库不可用也能成功启动。
- 当数据库可用时动态建立连接,从而消除了需要重新启动。
- 优雅地处理数据库中断,而不影响正在运行的应用程序。
以上是如何在没有数据库依赖的情况下启动Spring Boot应用程序?的详细内容。更多信息请关注PHP中文网其他相关文章!