【问题标题】:Prevent Spring Boot app start from failing when database does not connect防止数据库未连接时 Spring Boot 应用程序启动失败
【发布时间】:2021-03-01 03:40:28
【问题描述】:

我有一个连接到 postgres 实例的 Spring Boot 应用程序。我的 application.properties 看起来像这样:

spring.datasource.url=${POSTGRES_URL}
spring.datasource.username=${POSTGRES_USERNAME}
spring.datasource.password=${POSTGRES_PASSWORD}

我没有任何手动建立数据库连接的代码,Spring 会自动完成。我的问题是当应用程序无法连接到数据库时,应用程序根本无法启动。如何使成功的数据库连接不是应用启动的条件?

【问题讨论】:

    标签: java spring postgresql spring-boot jpa


    【解决方案1】:

    你可以在你的 props 文件中设置这个 spring.datasource.continue-on-error=true

    【讨论】:

    • 这对我不起作用,仍然得到[PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
    • 你用的是哪个版本的spring boot?
    • 2.2.7.RELEASE 是我的版本。
    • 你能在你的问题中添加你的属性文件吗?你肯定有错误的配置
    【解决方案2】:

    您通常在您的启动脚本中在您的应用程序之外执行此操作。仅在您的依赖项运行后才启动它。我不知道你是在容器化还是什么,但https://docs.docker.com/compose/compose-file/#depends_on 应该会给你一个想法。

    也就是说,在启动 ApplicationContext 之前,您当然可以在 public static void main(String... args) 方法中实现完全一样的代码,例如。 G。通过尝试通过普通 JDBC 连接来检查 PostGres 是否已经启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 2017-05-12
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多