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
  • 相关阅读:
    C# 实现 JAVA AES加密解密(转他人)
    转 Java、C#双语版配套AES加解密示例
    开发工具资料
    WebApi返回Json格式
    【转】NuGet.org 无法访问的解决方法
    使用Senparc.Weixin.WxOpen开发高可用的微信小程序
    WebApi资料
    WinForm资料
    Winform开发框架之终极应用
    Winform开发中另一种样式的OutLookBar工具条
  • 原文地址:https://www.cnblogs.com/qxynotebook/p/9735174.html
Copyright © 2011-2022 走看看