V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rizon
V2EX  ›  程序员

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

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