Spring注解解析:条件注解@Condition注解和@ConditonOnXXX注解

文章目录

  • 一、条件注解
  • 二、@Conditional
    • 1、使用方法
    • 2、示例

一、条件注解

条件注解的作用是给需要装载的Bean增加一个条件判断。只有满足条件才会装在到IoC容器中。而这个条件可以由自己去完成的,可以通过重写Condition接口重写matches()方法去实现自定义的逻辑。所以说这个注解增加了对Bean装载的灵活性。
在这里插入图片描述

  • @Conditonal:是一个元注解(meta-annotation),用于定义条件化的bean创建
  • @ConditionalOnBean:当指定的bean存在时,才会注册当前bean。
  • @ConditionalOnMissingBean:当指定的bean不存在时,才会注册当前bean。
  • @ConditionalOnClass:当指定的类在类路径上可用时,才会注册当前bean。
  • @ConditionalOnMissingClass:当指定的类在类路径上不可用时,才会注册当前bean。
  • @ConditionalOnProperty:当指定的属性具有指定的值时,才会注册当前bean。

二、@Conditional

1、使用方法

  • 自定义条件类
    需要实现org.springframework.context.annotation.Condition接口或继承org.springframework.context.annotation.Condition的某个实现类(如OnPropertyCondition、OnBeanCondition等)。 实现Condition接口需要覆盖matches(ConditionContext, AnnotatedTypeMetadata)方法,这个方法会返回一个布尔值,表示是否满足条件。
  • 在@Bean方法或@Configuration类上使用@Conditional
    可以将自定义的条件类作为@Conditional的值,或者直接使用Spring提供的条件注解(如@ConditionalOnProperty、@ConditionalOnBean等)。

2、示例

  • 自定义条件类
public class MyCustomCondition implements Condition {  @Override  public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {  // 这里可以根据需要编写条件判断逻辑  // 例如,检查某个配置属性是否存在或某个bean是否已经定义  // ...  return true; // 假设这里总是满足条件  }  
}
  • 在@Bean方法上使用@Conditional
@Configuration  
public class MyConfig {  @Bean  @Conditional(MyCustomCondition.class)  public MyBean myBean() {  return new MyBean();  }  
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/707076.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

英语学习笔记13——A new dress

A new dress 一件新连衣裙 词汇 Vocabulary colour / color n. 颜色 v. 上色,涂色  英  美 颜色短语:green hand 新手      black tea 红茶      white house 白宫      black sheep 害群之马 英文颜色类词汇: red 红色…

什么是控制,什么是控制系统?复杂的动态系统怎么被控制的?

在汽车研发中或者购买新能源汽车中,通常能提到什么EPS控制、ABS控制、智能域控等等各种说法,听起来让人觉得非常不一般,但是,这控制究竟是什么?控制的又是什么?其实很好理解! 关注我&#xff0c…

区块链数据集(一)Xblock

一、Transaction Datasets Ethereum On-chain Data [Dataset] 2021-10TransactionData/Code AvailableEthereum Introduction: This is the dataset of paper “XBlock-ETH: Extracting and Exploring Blockchain Data From Ethereum”. Data / Code Paper CiteDownloads: …

【大模型微调】一文掌握7种大模型微调的方法

本篇文章深入分析了大型模型微调的基本理念和多样化技术,细致介绍了LoRA、适配器调整(Adapter Tuning)、前缀调整(Prefix Tuning)等多个微调方法。详细讨论了每一种策略的基本原则、主要优点以及适宜应用场景,使得读者可以依据特定的应用要求和计算资源限…

Metasploit基本命令

1. 开启控制台 命令: msfconsole2. 搜索模块 命令: search ms17-010 # 模块名这里以搜索 ms17-010 为例, auxiliary 开头的为测试模块,也就是 POC,看看存不存在漏洞, exploit 开头的为攻击模块 3. 调…

算法day08

第一题 1. 两数之和 由上述题意所知,本题要采用二分法的解题思路,二分法主要是面向有序的数组且也满足二段性的数组,所谓二段性就是在一定的规则下能把该数组分成两个部分; 本题注意要点: 1、循环结束的条件&#xff…

AI助力,统信UOS服务器版V20(1070)打造智算底座新生态丨年度更新

随着人工智能(AI)技术的蓬勃发展,各行各业都迎来了前所未有的变革机遇。 在这一时代潮流下,统信软件凭借其深厚的技术积累和对行业趋势的敏锐洞察,于日前重磅推出了统信UOS服务器版V20(1070)。…

从Photoshop到AutoCAD,TeamOS在线预览全搞定:可道云TeamOS系统的在线预览功能深度体验

我们每天都要处理大量的文件,领导发过来的压缩包、同事发来的psd文件等,各种格式的文件杂乱又不好查阅…… 迫切需要一个能够在线预览、管理文件的平台。 初次搭建teamOS 可道云teamOS是一个企业级的在线文件管理平台,支持上百种格式的在线…

回收站删除的文件怎么恢复?6个恢复技巧记得收藏!

“回收站删除的文件还有机会恢复吗?应该怎么操作才能恢复回收站里删除的文件呀?本人纯小白,希望大家推荐几个简单易懂的恢复方法。” 在使用电脑的过程中,我们时常会不小心将重要文件误删到回收站,甚至直接从回收站中彻…

Python重复文件清理小工具

针对电脑长期使用产生的重复文件,尤其是微信电脑版每转发一次生成一个重复文件的问题,用python写了一个批量清理重复文件的小工具,记录备用。 import shutil import tkinter from tkinter import filedialog import os import threading imp…

数字水印 | 奇异值分解 SVD 的 Python 代码实现

🥑原理:数字水印 | 奇异值分解 SVD 的定义、原理及性质 🥑参考:Python 机器学习笔记:奇异值分解(SVD)算法 正文 对于一个图像矩阵,我们总可以将其分解为以下形式: 通过…

轻松掌握Python中的延时技巧:time模块的妙用

在编程中,我们经常需要让程序暂停一段时间,以便进行某些操作或等待某些事件发生。Python提供了多种方式来实现延时,其中最常用的是time模块。本文将详细讲解如何使用time模块来实现延时操作,并提供几个实用的示例代码。 基本原理…