zoukankan      html  css  js  c++  java
  • SpringBoot中DataSourceAutoConfiguration注解

    最近在学习springBoot时,其中有很大的一个核心的只是点:自动配置。

    通过 DataSourceAutoConfiguration 学习 自动配置是如何实现的。

    自动配置中比较重要的一个点就是 条件化配置?

    1、条件化配置

     JdbcTemplateCondition 的定义

    package com.qxy.readinglist.conditions;
    
    
    import org.springframework.context.annotation.Condition;
    import org.springframework.context.annotation.ConditionContext;
    import org.springframework.core.type.AnnotatedTypeMetadata;
    
    
    /**
     * 这个类 只有在 ClassPath里存在J
     */
    public class JdbcTemplateCondition implements Condition {
        @Override
        public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
            try {
                //加载 JdbcTemplate
                conditionContext.getClassLoader().loadClass("org.springframework.jdbc.core.JdbcTemplate");
                return true;
            } catch (ClassNotFoundException e) {
                return false;
            }
        }
    }
    

    如何 JdbcTemplateCondition

    @Bean
    @Conditional(JdbcTemplateCondition.class)//只有满足 JdbcTemplateCondition 条件,才会生成 bean
    public MyService myService(){
        return new MyService();
    }
    

     到此位置,你应该知道 条件化配置是怎么回事了吧,然后继续来看看 DataSourceAutoConfiguration

    @Configuration
    @ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class })
    @EnableConfigurationProperties(DataSourceProperties.class)
    @Import({ DataSourcePoolMetadataProvidersConfiguration.class,
    		DataSourceInitializationConfiguration.class })
    public class DataSourceAutoConfiguration {
       .....      
    }
    

      从上边可以看到,ConditionalOnClass,这个就是一个条件化注释,含义是:ClassPath里边有存在,DataSource.class, EmbeddedDatabaseType.class

    Read the fucking manual and source code
  • 相关阅读:
    Qt编程之右键单击QTreeWidgetItem弹出菜单
    Qt编程之QString 处理换行
    配置zbar识别二维码(转载)
    我学习图像处理的小结
    自己动手,实现“你的名字”滤镜
    结合grabcut和inpaint,实现人像去除
    (转载)找圆算法((HoughCircles)总结与优化
    寻找白板上的便签条
    寻找精密光学标定板上的矩形(网友提问)
    OpenCV中Denoising相关函数的简单介绍
  • 原文地址:https://www.cnblogs.com/qxynotebook/p/9735174.html
Copyright © 2011-2022 走看看