mybatis 配置_mybatis 自动配置

基于spring boot 提供的自动装配的能力,mybatis也有想要的自动装配形式。在浅谈mybatis自动装配前我们先了解一下以前我们是在xml如何配置的。

1de6234ffd340f01e95661799aad784b.png

729f3644ee2b9b31f68426af53f3de7f.png

上述是简单的一个数据源和mybatis配置,当然我们也可以通过代码进行配置,例如

e29b64eae0692b173786cb1bee73d25a.png

在cmallSqlSessionFactory中配置SqlSessionFactory,这里和配置xml的形式是一样的。

ffd3efa6a039e8f07fc4254be5236126.png

那么mybatis的自动配置呢?我们需要引入mybatis-spring-boot-starter,我们发现依赖了mybatis-spring-boot-autoconfigure,我们打开jar包可以看到类不多。

69561d491c5e4f84143f7d9baae3091c.png

我们先看MybatisAutoConfiguration头部有哪些注解:

f5d7b0d0e6033b0f76ee210ed4bb3b21.png

@ConditionalOnClass({ SqlSessionFactory.class, SqlSessionFactoryBean.class }):当前classpath路径下面是否存在SqlSessionFactory.class, SqlSessionFactoryBean.class这两个类,存在则进行将当前配置装载到spring容器中。

@ConditionalOnBean(DataSource.class):当当前上下文中有DataSource实例的时候才将当前配置装载到spring容器中。

@AutoConfigureAfter(DataSourceAutoConfiguration.class):这个配置装载在DataSourceAutoConfiguration配置装载之后。

ccb4d0e386e4458ae08f4bcc45bcd019.png

MybatisAutoConfiguration 的构造方法中我们关注一下拦截器(interceptors),它会去检索实现org.apache.ibatis.plugin.Interceptor的所有实现。例如pageHelper插件中实现了Interceptor。但是需要注意这个拦截器是否被SqlSessionFactory给装载,图2是在当上下文中不存在SqlSessionFactory 的Bean是会自动生成一个,同时将配置信息装载进去。那么如果SqlSessionFactory因某种原因(例如我们代码配置构建完成了SqlSessionFactory)构建完成,那么MybatisAutoConfiguration就不会去帮我们去处理图2,那么这些装载工作可能需要我们去自己完成,例如我们需要将pagerHelper的拦截插件构建到SqlSessionFactory。当然了pagerHelper为了降低成本,也会提供相应的装配,不用我们去关注这个装配,只需要我们实现拦截业务即可。

778488d1d72f26224fcca983c8fca9b1.png

其实装配和xml配置是很相似的,我们只要了解当前步骤需要加载相应的bean,bean又操作了哪些事情。我们就可以分析出问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值