遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

SpringBoot默认配置原理:MyBatis自动配置解析

今天,我们来分析一下MyBatis的自动配置解析

mybatis的自动配置类不在springboot中,下面搜索不到

 

需要在pom中添加mybatis的场景启动器

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

 

左侧会增加如下内容:

 

MybatisAutoConfiguration这个类会被反射加载到程序中

 

下面:

  @Configuration,表示是一个通过注解标注的springBean

  @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class})这个注解的意思是:当存在SqlSessionFactory.class, SqlSessionFactoryBean.class这两个类时才解析MybatisAutoConfiguration配置类,否则不解析这个配置类,因为,我们需要mybatis为我们返回会话对象,就必须有会话工厂相关类。 

 

下面@ConditionalOnMissingBean的含义是如果ioc容器中没有这个对象就创建,有就不执行,也就是不创建了 

 

Spring-boot为我们提供了统一的starter可以直接配置好相关的类,触发自动配置所需的依赖(mybatis)

也就是可以保证sqlSessionFactory、sqlSessionTemplate、dataSource等mybatis所需的组件均可被自动配置

点击pom中mybatis的场景启动器:mybatis-spring-boot-starter

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

 

可以看到有如下依赖,导入了下面的依赖,上面条件判断,SqlSessionFactory和SqlSessionFactoryBean就肯定存在了

因为maven依赖的传递性,我们只要依赖starter就可以依赖到所有需要自动配置的类,实现开箱即用的功能。 

配置文件中,点击mapper-locations 

 

可以看到调用的MybatisProperties中的set方法

 

配置文件中的配置和MybatisProperties中的对应

 

另外,也可以点击下面查看配置文件

 

【bak】

原文已更新:https://www.cnblogs.com/uncleyong/p/17092962.html

 

posted @ 2023-02-05 10:29  全栈测试笔记  阅读(560)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end