mybatis-spring如何做到接口编程的
2014-11-05 16:21
155 查看
What is MyBatis-Spring Not Spring-Mybatis?官方介绍
第二版那样,Spring 3.0 也仅支持 iBatis2。那么,我们就想将 MyBatis3 的支持添加 到 Spring3.0(参考 Spring Jira 中的问题)中。而不幸的是,Spring
3.0 的开发在 MyBatis 3.0 官方发布前就结束了。 因为 Spring 开发团队不想发布一个基于非发布版的 MyBatis 的整合支 持,那么 Spring 官方的支持就不得不继续等待了。要在 Spring 中支持 MyBatis,MyBatis 社 区认为现在应该是自己团结贡献者和有兴趣的人一起来开始将 Spring 的整合作为 MyBatis 社 区的子项目的时候了
一.spring 的配置
注入映射器有两种方法
1.每个都搞一个,这个比较坑,可以选择忽略
2.配置路径然后全局扫描
上面那个虽然不容,但是可以告诉我们他是如何做的
二.注册
我们来看MapperScannerConfiguer,主要就是doScan
这个里面其实还是用了MapperFactoryBean
他把每个接口,用MapperFactoryBean 生成代理之后注册到spring
而MapperFactoryBean 是如何做的呢
MapperFactoryBean.getObject()---->SqlSessionTemplate.getMapper()--->Configuration.getMapper()
-----MapperRegistry.getMapper()----->MapperProxyFactory.newInstance()
经过了几层之后总算到了代理实现类 返回了我们的接口代理类MapperProxy计算注册完成了
3.执行
执行肯定是从MapperProxy.invoke方法开始.
然后mybatis根据xml配置文件或者方法的注解,的类型,这类涉及一个十分重要的类MapperMethod
这里mybatis就根据不同的返回类型,已经配置的不同类型,执行SqlSessionTemplate不同的方法
SqlSessionTemplate 再最后调用下执行方法然后就ok了,但是这里SqlSessionInterceptor拦截这个请求,然后统一处理了下
就这样,我们的接口编程就完成
这个原理倒是很简单,只不过,当初自己只是从mybatis-spring入手,看了需求没有发现如何实现,后来断点才观察到了整个过程,
希望给大家理解下吧
第二版那样,Spring 3.0 也仅支持 iBatis2。那么,我们就想将 MyBatis3 的支持添加 到 Spring3.0(参考 Spring Jira 中的问题)中。而不幸的是,Spring
3.0 的开发在 MyBatis 3.0 官方发布前就结束了。 因为 Spring 开发团队不想发布一个基于非发布版的 MyBatis 的整合支 持,那么 Spring 官方的支持就不得不继续等待了。要在 Spring 中支持 MyBatis,MyBatis 社 区认为现在应该是自己团结贡献者和有兴趣的人一起来开始将 Spring 的整合作为 MyBatis 社 区的子项目的时候了
一.spring 的配置
注入映射器有两种方法
1.每个都搞一个,这个比较坑,可以选择忽略
2.配置路径然后全局扫描
上面那个虽然不容,但是可以告诉我们他是如何做的
二.注册
我们来看MapperScannerConfiguer,主要就是doScan
这个里面其实还是用了MapperFactoryBean
他把每个接口,用MapperFactoryBean 生成代理之后注册到spring
而MapperFactoryBean 是如何做的呢
MapperFactoryBean.getObject()---->SqlSessionTemplate.getMapper()--->Configuration.getMapper()
-----MapperRegistry.getMapper()----->MapperProxyFactory.newInstance()
经过了几层之后总算到了代理实现类 返回了我们的接口代理类MapperProxy计算注册完成了
3.执行
执行肯定是从MapperProxy.invoke方法开始.
然后mybatis根据xml配置文件或者方法的注解,的类型,这类涉及一个十分重要的类MapperMethod
这里mybatis就根据不同的返回类型,已经配置的不同类型,执行SqlSessionTemplate不同的方法
SqlSessionTemplate 再最后调用下执行方法然后就ok了,但是这里SqlSessionInterceptor拦截这个请求,然后统一处理了下
就这样,我们的接口编程就完成
这个原理倒是很简单,只不过,当初自己只是从mybatis-spring入手,看了需求没有发现如何实现,后来断点才观察到了整个过程,
希望给大家理解下吧
相关文章推荐
- mybatis如何根据mapper接口生成其实现类(springboot)
- springmvc+mybatis高效接口编程
- 如何整合Spring和Mybatis的思路分析(使用面向接口的mapper代理,不用再去写Dao的实现类)
- MyBatis配置文件和接口编程
- MyBatis Mapper 接口如何通过JDK动态代理来包装SqlSession 源码分析
- mybatis的环境搭建及如何和搭配spring使用
- 第四章 Spring.Net 如何管理您的类___统一资源访问接口
- Spring 如何将无法使用new操作符新建的对象作为spring的bean (使用FactoryBean接口)
- mybatis --- 以接口的方式进行编程
- [Java] Spring3.0 面向抽象(接口)编程
- [Java] Spring3.0 面向抽象(接口)编程
- mybatis整合spring的 泛型DAO接口
- Spring ProxyFactoryBean 是如何实现所有的AOP proxy都有可能转为Advised接口的?
- Mybatis(2)基于命名空间的接口编程方式
- MyBatis实例教程--以接口的方式编程
- Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring
- spring aop 面向切面编程 如何来做一个强大的日志记录功能
- 如何:实现接口事件(C# 编程指南)
- mybatis实战教程(mybatis in action)之二:以接口的方式编程(转)
- mybatis整合spring的 泛型DAO接口