zoukankan      html  css  js  c++  java
  • springboot自动装配(3)---条件注解@Conditional

    之前有说到springboot自动装配的时候,都是去寻找一个XXXAutoConfiguration的配置类,然而我们的springboot的spring.factories文件中有各种组件的自动装配类,到底哪些应该生效,哪些又不生效呢?这个时候就要用到spring提供的条件注解了。

    比如:

    @ConditionalOnJava                               系统的java版本是否符合要求

    @ConditionalOnBean                              容器中存在指定Bean

    @ConditionalOnMissingBean                  容器中不存在指定Bean
    @ConditionalOnExpression                     满足SpEL表达式指定
    @ConditionalOnClass                             系统中有指定的类
    @ConditionalOnMissingClass                 系统中没有指定的类
    @ConditionalOnProperty                        系统中指定的属性是否有指定的值
    @ConditionalOnResource                      类路径下是否存在指定资源文件
    @ConditionalOnWebApplication            当前是web环境
    @ConditionalOnNotWebApplication       当前不是web环境
    等等,
    当条件成立时,才会装配此配置
    比如 RabbitAutoConfiguration
     

     当有RabbitTemplate, Channel的时候才会加载这个配置,当没有ConnectionFactory连接工厂的时候才生成工厂配置。

    我们如何查看哪些自动生效了,哪些没有生效呢,这个时候可以配置一个参数 debug=true ,这个时候启动springboot程序会在启动日志打印匹配上的和没有匹配上的配置

    Positive matches: 匹配上的

    Negative matches:没有匹配上的

     
  • 相关阅读:
    类模板机制
    C和C++中const的区别
    bitset
    静态库or动态库?
    多态原理探究
    程序从编译到运行过程
    对象的内存模型
    重载、重写(覆盖)和隐藏
    对继承和派生的理解
    对C++对象的理解
  • 原文地址:https://www.cnblogs.com/nijunyang/p/12051770.html
Copyright © 2011-2022 走看看