SpringBoot中实现MyBatis自动配置

由于用惯了SpringBoot,最近一朋友在使用SSM时遇到了一些MyBatis配置上的问题,于是我俩拉出信仰中的XML配置文件开始分析起来,主要部分就是下面这个,不难理解sqlSessionFactory中的数据源引用了dataSource

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="jdbcUrl" value="${jdbcUrl}"/>
    <property name="driverClass" value="${driverClass}"/>
    <property name="user" value="${user}"/>
    <property name="password" value="${password}"/>
</bean>

当时便想SpringBoot嘛,自动配置就完事了,肯定是大佬们写了个自动配置类然后放在了META-INF/spring.factories里面,想着便点开了spring-boot-autoconfigure下面的spring.factories,一搜myb,b还没打出来搜索框就红了,找不到,场面一度十分尴尬

后来一想也是,MyBatis版本都要自己写怎么可能事先写好自动配置类呢

1.SpringBoot中MyBatis是怎么配置的

当引用MyBatis场景启动器的时候,点进去看可以找到自动配置依赖!

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

按照自动配置的思路可以找到自动配置类,配置类里面声明了SqlSessionFactory的Bean,代码大致如下,通过dataSource生成sqlSessionFactory
  @Bean
  @ConditionalOnMissingBean
  public SqlSessionFactory sqlSessionFactory(DataSource dataSource) {...}

其实这个还不是笔者纠结的地方,就在刚才笔者在火星的反射弧终于想明白了下面这个问题

2.SpringBoot中MyBatis配置能自动的原因

在使用MyBatis时一没加配置类声明Bean(其实加了),二没用ComponentScan,自动配置类也不再核心类的包下,笔者百思不得其解,为什么自动配置类声明的Bean能被放入到Spring容器中

就在写文章前,笔者走在回家的路上,不知怎么回事就猛然顿悟了,在自动配置依赖下也存在一个META-INF/spring.factories文件
其中声明了自动配置类的全限定名,因此SpringBoot在自动配置时会获取jar包下META-INF/spring.factories的信息
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,633评论 0 4
  • springboot 概述 SpringBoot能够快速开发,简化部署,适用于微服务 参考嘟嘟大神SpringBo...
    一纸砚白阅读 5,497评论 2 20
  • 作者:祖大帅juejin.im/post/5b679fbc5188251aad213110 SpringBoot的...
    xiaotian是个混子阅读 390评论 0 3
  • 在我和达夫哥 结婚纪念日不是婚礼那天 领证的日子才是 毕竟合情合理都大不过合法呀 2010.10.10那天领的结婚...
    日光倾城911阅读 234评论 0 0
  • 敬爱的李老师,智慧的教授,亲爱的家人们: 大家好!我是来自长兴南方眼视光中心的杨军微,我是王院长的人。今天...
    杨军微阅读 285评论 0 1