首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rizon
V2EX  ›  程序员

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

  •  
  •   rizon · 50 天前 via iPhone · 613 次点击
    这是一个创建于 50 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是这么个场景,我有一个场景,如果用户配置了数据源,那么我就创建 bean1,如果用户没有配置,那么我就创建 bean2。
    弄了半天没弄出来,用了 conditionOn 什么的注解没弄出来。
    这东西到底怎么配啊???
    6 条回复    2020-04-03 12:15:38 +08:00
    gaobing
        1
    gaobing   50 天前 via Android
    做 starter 吗,conditionon 条件检测一下容器中有没有 datasource 这个接口的类,可以参考 durid starter 的实现
    rizon
        2
    rizon   50 天前
    @gaobing #1 主要问题就出在,我自己写的 @ConditionalOnBean(DataSource.class) 判断结果总是 false
    rizon
        3
    rizon   50 天前
    @gaobing #1 我参考了 flyway 的,实在搞不懂为啥
    phantomzz
        4
    phantomzz   50 天前
    ConditinalOnBean 或者 ConditionalOnMissingBean 都可以,如果你参数是 Class 的话,你要确定 spring 根据这个 class 生成的 beanName 和你期待的是不是一致。可以下断点看一下。
    vitoliu
        5
    vitoliu   49 天前
    @rizon 出现判断结果为 false 的话开启 debug 日志,自己手写一个 condition 的 match 类,边看日志,边 debug。
    daxiguaya
        6
    daxiguaya   3 天前
    实际上得看数据源从哪里注册进去的,从 META-INF/spring.factories 里的自动配置注册进去的话得这样: https://paste.ubuntu.com/p/NZPyqT5pXC/
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2878 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:21 · PVG 15:21 · LAX 00:21 · JFK 03:21
    ♥ Do have faith in what you're doing.