我正在构建一个服务,它应该在springboot应用程序启动时基于可用的数据源具有足够的弹性和弹性。
e、 g.当foorepository的数据源在线时,继续并启动fooservice;当barrepository的数据源联机时,继续并启动barservice。如果其中一个数据源处于脱机状态(如网络问题或终止),则忽略并继续处理其余的存储库/服务,而不是失败启动。
你知道怎么做到吗?
我正在构建一个服务,它应该在springboot应用程序启动时基于可用的数据源具有足够的弹性和弹性。
e、 g.当foorepository的数据源在线时,继续并启动fooservice;当barrepository的数据源联机时,继续并启动barservice。如果其中一个数据源处于脱机状态(如网络问题或终止),则忽略并继续处理其余的存储库/服务,而不是失败启动。
你知道怎么做到吗?
1条答案
按热度按时间2sbarzqh1#
通常这类事情可以通过使用
@Conditional
及其衍生物。在一句话中,这个特性只允许加载bean(并使它可以注入到其他bean中),只要它遵守一些条件。通常它是某种属性,或者可能存在另一个bean,但是简单地说,您可以自己定义一个实现。
这是一个关于条件句的教程。更确切地说,您需要一段关于自定义条件的内容
因此,您可以定义“检查数据源的可用性”并返回的条件
true
从它的matches
方法。一个警告是,如果由于条件不匹配而不加载dao,那么可能使用此dao的服务的代码将失败,因为没有可供注入的dao bean。
因此,您可能希望在不满足条件时加载no-op dao实现,或者不加载服务本身,这实际上取决于实际的项目实现。