我想用 Spring Boot 创建一个微服务。对于持久性,我使用 mariadb 数据库。为了等待在 docker 容器中运行的数据库,我实现了如下所示的代码 here :
@Bean
public DatabaseStartupValidator databaseStartupValidator(DataSource dataSource) {
var dsv = new DatabaseStartupValidator();
dsv.setDataSource(dataSource);
dsv.setTimeout(60);
dsv.setInterval(7);
dsv.setValidationQuery(DatabaseDriver.MYSQL.getValidationQuery());
return dsv;
}
代码运行良好,我的应用程序现在正在等待数据库连接。但我在应用程序启动时遇到异常:java.sql.SQLNonTransientConnectionException: Could not connect to Host ....
...
...
...
在下一行我得到一个信息,它将等待数据库:021-04-07 21:29:40.816 INFO 16569 --- [ main] o.s.j.support.DatabaseStartupValidator : Database has not started up yet - retrying in 7 seconds (timeout in 57.65 seconds)
之后,应用程序按预期启动。所以我认为一切正常,但我必须做些什么来抑制异常?在链接中 article它应该无一异常(exception)地工作。我是否必须实现“dependsOnPostProcessor”功能?我必须使用哪个依赖项?抱歉,可能是个愚蠢的问题,我是 Spring Boot 的新手。
最佳答案
要摆脱该异常,您可以在 application.properties
中声明以下指令文件:
logging.level.com.zaxxer.hikari=OFF
请记住,如果应用程序无法与数据库取得联系,您的 Spring 会在一段时间后由于该异常而崩溃。此外,上述指令会阻止您查看与 Hikari 相关的任何日志记录 Activity 。总之,您可以隐藏异常的外观,直到应用程序因超时而死亡之前成为可能。
希望我澄清了一点
关于java - Spring Boot中等待数据库连接无一异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66993064/