Spring AbstractRoutingDataSource是否可以在没有默认数据源的情况下工作?

owfi6suc  于 2022-10-30  发布在  Spring
关注(0)|答案(1)|浏览(126)

我正在尝试使用AbstractRoutingDataSource在Spring中实现一个多租户数据源。我不需要任何默认的数据源,因为它在我的案例中不是一个有效的场景。在启动过程中,determineCurrentLookupKey()被调用(我不知道从哪里调用)。此时我的上下文还没有加载,所以determineCurrentLookupKey()返回一个空值,我得到了这个异常:
Cannot determine target DataSource for lookup key [null]
有什么办法吗?谢谢。

vohkndzv

vohkndzv1#

我遇到了同样的问题,添加spring.jpa.properties.javax.persistence.validation.mode=none对我来说不起作用...实际上,我不确定这是否是一个真正好的禁用这些验证的解决方案...
但我找到了另一个解决办法!
setLenientFallback(布尔值)
(布尔值)
指定如果找不到当前查找关键字的特定数据源,是否对默认数据源应用宽松的回退。默认值为“true”,即接受在目标数据源Map中没有对应条目的查找关键字-在这种情况下,仅回退到默认数据源。
如果您希望仅在查找键为空时应用回退,请将此标志切换为“false”。没有DataSource条目的查找键将导致IllegalStateException。
也许这就是你要找的?
但是,如果查找键为null,则仍将调用默认DataSource...

UPD

如果你想完全摆脱默认数据源的设置,你需要从你的application.yaml中删除spring.jpa.hibernate.ddl-auto=update,因为这就是为什么Spring在上下文初始化过程中试图获得这个连接的原因。这对我来说也是有效的:)

相关问题