Обработка ошибок подключения к базе данных в Spring Boot при запуске и после запуска - PullRequest
0 голосов
/ 25 мая 2019

У меня есть следующая конфигурация в application.properties:

spring.datasource.url=jdbc:postgresql://localhost:5432/demodb
spring.datasource.username=postgres
spring.datasource.password=password
spring.session.store-type=jdbc
spring.session.jdbc.initialize-schema=always
spring.jpa.show-sql=true
spring.jpa.generate-ddl=true
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update

Я хочу корректно обработать ошибку соединения с базой данных, и приложение не должно перестать работать из-за сбоя соединения с базой данных.

Я хочу, чтобы приложение обрабатывало ошибку как во время запуска, так и после запуска.

Я получаю следующее исключение, когда моя база данных не работает:

Caused by: org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:245) ~[postgresql-42.2.2.jar:42.2.2]
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.2.jar:42.2.2]
    ...
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_172]
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) ~[na:1.8.0_172]
    ...

In @ControllerAdvise, я пытался обработать ошибку после запуска, но исключение не получалось:

@ControllerAdvice
public class AppAdvise {

    @ResponseBody
    @ExceptionHandler(PSQLException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public AppResponse psqlExceptionHandler(PSQLException ex) {
        return helpers.getResponseErrorObject(ex.getMessage());
    }

    @ResponseBody
    @ExceptionHandler(JDBCConnectionException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public AppResponse psqlExceptionHandler(JDBCConnectionException ex) {
        return helpers.getResponseErrorObject(ex.getMessage());
    }
}

Как я могу обработать ошибки подключения как при запуске, так и после запуска?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...