首页 > 其他分享 >Spring6 探析之@Conditional 注解

Spring6 探析之@Conditional 注解

时间:2023-05-27 21:34:21浏览次数:54  
标签:Conditional value 探析 注解 Spring6 Condition

Spring6 探析之@Conditional 注解

介绍

我们写业务逻辑时,会用到 if-else 条件,@Conditional 注解可以通过条件判断是否要将 Bean 注入到 IOC 容器中,它可以标记在类和方法上,我们先看一下源码吧

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Conditional {

	/**
	 * All {@link Condition} classes that must {@linkplain Condition#matches match}
	 * in order for the component to be registered.
	 */
	Class<? extends Condition>[] value();

}

value 参数:是一个字节码数组,我们在自定义的类中编写条件,然后传入进value参数

演示

@Conditional 可以作用在类和方法上,也可以同时作用在类和方法上,这里我只演示作用在方法上的例子,请大家举一反三


参数 value 传入的类有一定的限制:必须是实现了 Condition 接口

先写两个用于条件判断的类

image-20230527203236317

image-20230527203249932

然后再配置类中使用 @Conditional 注解

image-20230527203313340

可以看到,我将 @Conditional 注解作用在方法上,当满足条件时,才会创建对应的 bean 实例

测试一下:

这段代码用于输出 IOC 中的所有 bean name

image-20230527203355495

结果如图:

image-20230527203428988

因为我的操作系统是 Windows,所以id为 macBean 的实例没有被创建

标签:Conditional,value,探析,注解,Spring6,Condition
From: https://www.cnblogs.com/acdongla/p/17437310.html

相关文章

  • Spring6 探析之@PropertySource 注解
    Spring6探析之@PropertySource注解介绍@PropertySource注解用于加载配置类,在使用Spring时,我们可以使用@PropertySource注解将自定义的配置文件加载到Spring中,方便我们的自定义的开发下面是@PropertySource的源码@Target(ElementType.TYPE)@Retention(RetentionPol......
  • Spring6 探析之@Import 注解
    Spring6探析之@Import注解简介@Import注解与@Bean注解的作用相同,都可以将实例注册到IOC中,但区别是,@Import只能作用在类上,并且使用@Import时,不需要再使用@Configuration注解下面是@Import的源码@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documen......
  • Spring6 探析之@Bean 注解
    Spring6探析之@Bean注解介绍@Bean是spring的常用注解,他可以标记在方法和注解上,可以将方法的返回值放在IOC容器中,它又以下特点单例可指定bean的名称可控制bean的初始化与销毁方法让我们看一下@Bean的源码吧@Target({ElementType.METHOD,ElementType.ANNOTATION_TYPE})......
  • Spring6 探析之@Configuration 注解
    Spring6探析之@Configuration注解介绍@Configuration注解大家都不陌生,该注解有以下特点必须在类上使用能够将被注解的类加载到IOC容器里能够将类中被@Bean注解标记的方法加载到IOC容器里@Configuration有一些参数,其中最值得关注的是proxyBeanMethods,该参数值默认为tr......
  • Tomcat10依赖问题 jakarta.servlet-api 6.0.0 spring6.x.x
    org.springframework.web.servlet.DispatcherServlet’isnotassignabletojavax.servlet.Servlet1、pom.xml配置<dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifact......
  • 架构师日记-从数据库发展历程到数据结构设计探析
    作者:京东零售刘慧卿一数据库发展史起初,数据的管理方式是文件系统,数据存储在文件中,数据管理和维护都由程序员完成。后来发展出树形结构和网状结构的数据库,但都存在着难以扩展和维护的问题。直到七十年代,关系数据库理论的提出,以表格形式组织数据,数据之间存在关联关系,具有了良好......
  • [Pix2Pix] Image-to-Image Translation with Conditional Adversarial NetWorks
    paper:https://arxiv.org/pdf/1611.07004.pdf[CVPR2017]code:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pixhttps://phillipi.github.io/pix2pix/[official]数据组织:需要成对图像这是加利福利亚大学在CVPR2017上发表的一篇论文,讲的是如何用条件生成对抗......
  • 你还弄不清xxxForCausalLM和xxxForConditionalGeneration吗?
    Part1基本介绍大语言模型目前一发不可收拾,在使用的时候经常会看到transformers库的踪影,其中xxxCausalLM和xxxForConditionalGeneration会经常出现在我们的视野中,接下来我们就来聊聊transformers库中的一些基本任务。这里以三类模型为例:bert(自编码)、gpt(自回归)、bart(编码-解码)首......
  • Spring很常用的@Conditional注解的使用场景和源码解析
    你好,我是刘牌!介绍今天要分享的是Spring的注解@Conditional,@Conditional是一个条件注解,它的作用是判断Bean是否满足条件,如果满足条件,则将Bean注册进IOC中,如果不满足条件,则不进行注册,这个注解在SpringBoot中衍生出很多注解,比如@ConditionalOnProperty,@ConditionalOnBean,@Conditi......
  • java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSuppor
    1.报错截图2.问题原因缺少对应的类3.问题解决<dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1.1.2</version></dependency><......