zoukankan      html  css  js  c++  java
  • springboot--自动配置

    自动配置中使用的条件化注解

    条件化注解     配置生效条件
    @ConditionalOnBean     配置了某个特定Bean
    @ConditionalOnMissingBean     没有配置特定的Bean
    @ConditionalOnClass     Classpath里有指定的类
    @ConditionalOnMissingClass     Classpath里缺少指定的类
    @ConditionalOnExpression     给定的SpEL表达式计算结果为true
    @ConditionalOnJava     Java的版本匹配特定值或者一个范围值
    @ConditionalOnJndi     参数中给定的JNDI位置必须存在一个,如果没有参数,则需要JNDI InitialContext
    @ConditionalOnProperty     指定的配置属性要有一个明确的值
    @ConditionalOnResource     Classpath里有指定的资源
    @ConditionalOnWebApplication     这是一个Web应用程序
    @ConditionalOnNotWebApplication     这不是一个Web应用程序

    @Configuration
    @ConditionalOnClass({DataSource.class, EmbeddedDatabaseType.class})
    @EnableConfigurationProperties({DataSourceProperties.class})
    @Import({Registrar.class, DataSourcePoolMetadataProvidersConfiguration.class})
    public class DataSourceAutoConfiguration {
        ... ...
      
      @Configuration
      @ConditionalOnProperty(prefix = "spring.datasource", name = "jmx-enabled")
      @ConditionalOnClass(name = "org.apache.tomcat.jdbc.pool.DataSourceProxy")
      @Conditional(DataSourceAutoConfiguration.DataSourceAvailableCondition.class)
      @ConditionalOnMissingBean(name = "dataSourceMBean")
      protected static class TomcatDataSourceJmxConfiguration {
      
         @Bean
         public Object dataSourceMBean(DataSource dataSource) {
            if (dataSource instanceof DataSourceProxy) {
               try {
                  return ((DataSourceProxy) dataSource).createPool().getJmxPool();
               }
               catch (SQLException ex) {
                  logger.warn("Cannot expose DataSource to JMX (could not connect)");
               }
            }
            return null;
         }
    
      }
        ... ...
    }

    https://www.cnblogs.com/niechen/p/9262452.html

  • 相关阅读:
    Linux内核tracepoints
    Linux 设备驱动的固件加载
    Android HIDL HAL 接口定义语言详解
    Android HIDL 详解
    Android各版本对应的SDK版本
    ifconfig调用过程
    Input系统—启动篇
    Linux下2号进程的kthreadd--Linux进程的管理与调度
    rest_init函数分析(续)
    【python】-常用模块2
  • 原文地址:https://www.cnblogs.com/jentary/p/11643108.html
Copyright © 2011-2022 走看看