Spring Boot 学习(7)——条件注解

看到今天,方才把前面 demo2 中的一些地方想明白。就好比一个数学系的研究生在给初中生讲数据题的时候,不知不觉就会用到超纲的知识,这也是为什么各类大神的教程(视频或文字)按些步骤来总有对不上的地方,因为他们大概率会用到超纲知识,或不小心就按了什么快捷键完成了个什么操作,而作为老白的我们,却浑然不知问题出在哪里了......


条件注解:如果注解指定的条件成立,则触发指定行为

@ConditionalOnXxx

@ConditionalOnClass:如果类路径中存在这个类,则触发指定行为

@ConditionalOnMissingClass:如果类路径中不存在这个类,则触发指定行为

@ConditionalOnBean:如果容器中存在这个Bean(组件),则触发指定行为

@ConditionalOnMissingBean:如果容器中不存在这个Bean(组件),则触发指定行为

场景:

  • 如果存在FastsqlException这个类,给容器中放一个Cat组件,名cat01,
  • 否则,就给容器中放一个Dog组件,名dog01
java 复制代码
    // 放在方法级别,单独对这个方法进行注解判断。    
    @ConditionalOnClass(name="com.alibaba.druid.FastsqlException")
    @Bean
    public Cat cat01(){
        return new Cat();
    }
    
    // 这句新补的,视频教程里大神有说,但是他没写这句,又把这段反复看了几次,包括关联的上下文知识
    // 发现这句大神是没有写的,在大神的素材里也没看到
    // 尽信神则无神!自勉!
    @ConditionalOnMissingClass(value="com.alibaba.druid.FastsqlException")
    @Bean
    public Dog dog01(){
        return new Dog();
    }
  • 如果系统中有dog01这个组件,就给容器中放一个 User组件,名zhangsan
  • 否则,就放一个User,名叫lisi
java 复制代码
    @ConditionalOnBean(value = Dog.class)
    @Bean
    public User zhangsan(){
        return new User();
    }
    @ConditionalOnMissingBean(value = Dog.class)
    @Bean
    public User lisi(){
        return new User();
    }

@ConditionalOnBean(value=组件类型,name=组件名字):判断容器中是否有这个类型的组件,并且名字是指定的值




**PS:**重新更正里面的代码,新补了一行。视频教程里大神有说,但是他没写这句,自己照着写,得出的结果和大神的不一样。于是又把这段视频反复看了几次,又看了包括关联的上下文知识。发现有行代码大神是没有写的,在大神的提供教学素材里也没看到。

尽信神则无神!

自勉!

身坚志残的老白!

相关推荐
葫芦和十三12 小时前
图解 MongoDB 05|文档模型设计:内嵌 vs 引用,反范式不是免费午餐
后端·mongodb·agent
不能放弃治疗15 小时前
单 Agent 实现模式
后端
IT_陈寒17 小时前
Redis内存爆了,原来我漏掉了这个致命配置
前端·人工智能·后端
小bo波18 小时前
从"任意文件复制"深挖Java I/O:字符流与字节流的本质抉择
java·nio·io流·后端开发·文件复制
fliter18 小时前
最后一块拼图:用 bitvec 构造 IPv4 包,真正做出自己的 Ping
后端
用户35218024547519 小时前
🎆从 Prompt 到 Skill:让 Spring AI Agent 学会"装新技能"
人工智能·spring boot·ai编程
fliter19 小时前
用 Rust 解析并生成 ICMP 包:checksum、nom 与 cookie-factory
后端
蝎子莱莱爱打怪19 小时前
XZLL-IM干货系列 03|消息 ID 设计:一个 UUID 搞不定的事,我用两个 ID 解决了
后端·面试·开源
fliter19 小时前
从 panic 到 Result:用 Rust 重新整理一个 ping 项目的错误处理
后端
森蓝情丶20 小时前
我给 AI 搭了个法庭:一个前端仔的 LangGraph 实战全记录
前端·后端