• 请不要在回答技术问题时复制粘贴 AI 生成的内容
rizon
V2EX  ›  程序员

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

  •  
  •   rizon ·
    othorizon · Feb 16, 2020 via iPhone · 2318 views
    This topic created in 2308 days ago, the information mentioned may be changed or developed.
    是这么个场景,我有一个场景,如果用户配置了数据源,那么我就创建 bean1,如果用户没有配置,那么我就创建 bean2。
    弄了半天没弄出来,用了 conditionOn 什么的注解没弄出来。
    这东西到底怎么配啊???
    6 replies    2020-04-03 12:15:38 +08:00
    gaobing
        1
    gaobing  
       Feb 16, 2020 via Android
    做 starter 吗,conditionon 条件检测一下容器中有没有 datasource 这个接口的类,可以参考 durid starter 的实现
    rizon
        2
    rizon  
    OP
       Feb 16, 2020
    @gaobing #1 主要问题就出在,我自己写的 @ConditionalOnBean(DataSource.class) 判断结果总是 false
    rizon
        3
    rizon  
    OP
       Feb 16, 2020
    @gaobing #1 我参考了 flyway 的,实在搞不懂为啥
    0NF09LJPS51k57uH
        4
    0NF09LJPS51k57uH  
       Feb 16, 2020
    ConditinalOnBean 或者 ConditionalOnMissingBean 都可以,如果你参数是 Class 的话,你要确定 spring 根据这个 class 生成的 beanName 和你期待的是不是一致。可以下断点看一下。
    vitoliu
        5
    vitoliu  
       Feb 16, 2020
    @rizon 出现判断结果为 false 的话开启 debug 日志,自己手写一个 condition 的 match 类,边看日志,边 debug。
    daxiguaya
        6
    daxiguaya  
       Apr 3, 2020
    实际上得看数据源从哪里注册进去的,从 META-INF/spring.factories 里的自动配置注册进去的话得这样: https://paste.ubuntu.com/p/NZPyqT5pXC/
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2714 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 15:09 · PVG 23:09 · LAX 08:09 · JFK 11:09
    ♥ Do have faith in what you're doing.