微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

延迟SpringBoot应用程序启动,直到数据库启动

如何解决延迟SpringBoot应用程序启动,直到数据库启动

我有一个SpringBoot应用程序,当它使用的数据库未启动时,它将无法启动,因为数据源bean将无法初始化。我希望我的应用程序在数据库启动之前不启动,以免发生此故障。

要提到的是,此应用程序正在Kubernetes中运行,因此一种选择是使用init容器。我希望在应用程序内部拥有这种逻辑。

首先,这是一个坏主意,我应该坚持使用init容器?

如果这不是一个坏主意,通常最好的方法是什么。我正在查看Spring Retry,一种可能的解决方案似乎是@Bean数据源初始化方法中具有重试逻辑。那有什么缺点吗?有更好的方法吗?

解决方法

不确定是否适合您,但是如果您声明了数据源bean。

您可以@Lazy注释以将Bean初始化推迟到需要时。

您的应用程序启动不应在启动时失败,因为在需要之前不会初始化Datasource bean

,

您可以使用启动探针从一开始就检查数据库连接。如果要为健康状况而不断地池连接数据库,则可以使用其他probles。在检查构建单元测试阶段之后,或者在用于部署的管道中,您可以添加一个步骤来检查所使用的外部服务/数据库的连接。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。