在线等求助, spring 配置如何判断用户是否创建了数据源

2020-02-16 13:37:47 +08:00
 rizon
是这么个场景,我有一个场景,如果用户配置了数据源,那么我就创建 bean1,如果用户没有配置,那么我就创建 bean2。
弄了半天没弄出来,用了 conditionOn 什么的注解没弄出来。
这东西到底怎么配啊???
1536 次点击
所在节点    程序员
6 条回复
gaobing
2020-02-16 14:10:47 +08:00
做 starter 吗,conditionon 条件检测一下容器中有没有 datasource 这个接口的类,可以参考 durid starter 的实现
rizon
2020-02-16 14:15:07 +08:00
@gaobing #1 主要问题就出在,我自己写的 @ConditionalOnBean(DataSource.class) 判断结果总是 false
rizon
2020-02-16 14:15:27 +08:00
@gaobing #1 我参考了 flyway 的,实在搞不懂为啥
phantomzz
2020-02-16 14:20:57 +08:00
ConditinalOnBean 或者 ConditionalOnMissingBean 都可以,如果你参数是 Class 的话,你要确定 spring 根据这个 class 生成的 beanName 和你期待的是不是一致。可以下断点看一下。
vitoliu
2020-02-16 23:58:17 +08:00
@rizon 出现判断结果为 false 的话开启 debug 日志,自己手写一个 condition 的 match 类,边看日志,边 debug。
daxiguaya
2020-04-03 12:15:38 +08:00
实际上得看数据源从哪里注册进去的,从 META-INF/spring.factories 里的自动配置注册进去的话得这样: https://paste.ubuntu.com/p/NZPyqT5pXC/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/644992

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX