@ConditionalOnClass注解分析

Spring中为Kafka提供了一个自动配置类

KafkaAutoConfiguration

在类上有一个注解

@ConditionalOnClass(KafkaTemplate.class)

这个注解通俗的说就是Spring工程中引用了Kafka的包 才会构建这个bean

官方解释:

 
  1. /**

  2. * {@link Conditional} that only matches when the specified classes are on the classpath.

  3. *

  4. * @author Phillip Webb

  5. */

  6. @Target({ ElementType.TYPE, ElementType.METHOD })

  7. @Retention(RetentionPolicy.RUNTIME)

  8. @Documented

  9. @Conditional(OnClassCondition.class)

  10. public @interface ConditionalOnClass {

  11.  
  12. /**

  13. * The classes that must be present. Since this annotation is parsed by loading class

  14. * bytecode, it is safe to specify classes here that may ultimately not be on the

  15. * classpath, only if this annotation is directly on the affected component and

  16. * <b>not</b> if this annotation is used as a composed, meta-annotation. In order to

  17. * use this annotation as a meta-annotation, only use the {@link #name} attribute.

  18. * @return the classes that must be present

  19. */

  20. Class<?>[] value() default {};

  21.  
  22. /**

  23. * The classes names that must be present.

  24. * @return the class names that must be present.

  25. */

  26. String[] name() default {};

  27.  
  28. }

就是说只有在classpath下能找到kafkaTemplate类才会构建这个bean。

其他类似注解:

@Conditional(TestCondition.class)

这句代码可以标注在类上面,表示该类下面的所有@Bean都会启用配置,也可以标注在方法上面,只是对该方法启用配置。

@ConditionalOnBean(仅仅在当前上下文中存在某个对象时,才会实例化一个Bean)
@ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean)
@ConditionalOnExpression(当表达式为true的时候,才会实例化一个Bean)
@ConditionalOnMissingBean(仅仅在当前上下文中不存在某个对象时,才会实例化一个Bean)
@ConditionalOnMissingClass(某个class类路径上不存在的时候,才会实例化一个Bean)
@ConditionalOnNotWebApplication(不是web应用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值