zoukankan      html  css  js  c++  java
  • mybatis在spring boot的加载过程

    mybatis在spring boot的加载过程

    springboot 默认会加载mybatis-spring-boot-autoconfigure-1.3.0.jar下的spring.factories文件

    # Auto Configure
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=
    org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
    
    

    MybatisAutoConfiguration加载mybatis相关类

    // 初始化SqlSessionFactory
      @Bean
      @ConditionalOnMissingBean
      public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
        factory.setDataSource(dataSource);
    ///
    
        return factory.getObject();
      }
    // 初始化SqlSessionTemplate
      @Bean
      @ConditionalOnMissingBean
      public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
        ExecutorType executorType = this.properties.getExecutorType();
        if (executorType != null) {
          return new SqlSessionTemplate(sqlSessionFactory, executorType);
        } else {
          return new SqlSessionTemplate(sqlSessionFactory);
        }
      }
    

    org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.AutoConfiguredMapperScannerRegistrar#registerBeanDefinitions修改BeanDefinition

    @Override
        public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
    
          logger.debug("Searching for mappers annotated with @Mapper");
    
          ClassPathMapperScanner scanner = new ClassPathMapperScanner(registry);
    
          try {
            if (this.resourceLoader != null) {
              scanner.setResourceLoader(this.resourceLoader);
            }
    
            List<String> packages = AutoConfigurationPackages.get(this.beanFactory);
            if (logger.isDebugEnabled()) {
              for (String pkg : packages) {
                logger.debug("Using auto-configuration base package '{}'", pkg);
              }
            }
    
            scanner.setAnnotationClass(Mapper.class);
            scanner.registerFilters();
            scanner.doScan(StringUtils.toStringArray(packages));
          } catch (IllegalStateException ex) {
            logger.debug("Could not determine auto-configuration package, automatic mapper scanning disabled.", ex);
          }
        }
    
  • 相关阅读:
    jquery源码解读 (摘自jQuery源码分析系列图书(pdf)) 持续更新
    jquery源码学习
    判断浏览器是ie9座特殊处理
    js继承
    引入flash
    IE7下面踩得坑
    导航栏对应相应的模块,可点击索引和滚动索引到需要到达的位置
    java的eclipse的使用
    弹窗在大屏上居中对齐,在小屏上被挡住解决方案
    左侧菜单栏,有对个li对应一个content
  • 原文地址:https://www.cnblogs.com/seekwind/p/12600298.html
Copyright © 2011-2022 走看看