一文看懂Spring中的@Conditional注解

conditional意味着bean的实例化条件

@ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)

对应Condition接口实现类 OnBeanCondition,解析传入某个bean的class、type、beanName判断容器中是否存在,如果有则实例化,如果容器中不存在则不进行实例化


@ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean) 

对应Condition接口实现类 OnClassCondition


@ConditionalOnExpression(当表达式为true的时候,才会实例化一个Bean)


@ConditionalOnMissingBean(仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean)对应Condition接口实现类 OnBeanCondition


@ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean)

对应Condition接口实现类 OnClassCondition


@ConditionalOnNotWebApplication(不是web应用)

ConditionalOnCloudPlatform
ConditionalOnJava
ConditionalOnJndi
ConditionalOnNotWarDeployment
ConditionalOnNotWebApplication
ConditionalOnProperty
ConditionalOnResource
ConditionalOnSingleCandidate
ConditionalOnWarDeployment

在Spring中对bean实例化过程中,会获取@Conditional注解,并获取它实现的Condition接口实现类,通过Condition接口的matches方法,确定当前实例化bean的实例化逻辑,该接口返回true则实例化bean,否则不进行bean的实例化

相关推荐

  1. Spring@Conditional注解

    2024-03-14 06:56:06       39 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-14 06:56:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-14 06:56:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-14 06:56:06       87 阅读
  4. Python语言-面向对象

    2024-03-14 06:56:06       96 阅读

热门阅读

  1. android pdf框架-8,图片缓存

    2024-03-14 06:56:06       46 阅读
  2. 基于R语言APSIM模型应用

    2024-03-14 06:56:06       38 阅读
  3. CentOS安装MySQL详细教程

    2024-03-14 06:56:06       40 阅读
  4. Adb无线连接调试

    2024-03-14 06:56:06       39 阅读