今天,我们来分析一下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中的对应
另外,也可以点击下面查看配置文件
原文已更新:https://www.cnblogs.com/uncleyong/p/17092962.html
标签:spring,配置,boot,mybatis,自动,MyBatis,解析,class,starter From: https://www.cnblogs.com/uncleyong/p/17092962.html