zoukankan      html  css  js  c++  java
  • Spring整合Mybatis步骤

    Spring整Mybatis底层原理实现步骤
    1.首先Spring主要做对Bean的管理,包含bean的初始化等信息
    spring内部有一个BeanDefinition 有一系列对Bean的描述,包含单例/多例 beanName BeanClass等信息,也可以理解成 标签所描述的信息
    2.spring集成了Mybatis 那么也要管理mybatis相关联的bean,我们经常使用的通常是定义xxxMapper 的接口,想要接口被Spring管理必须需要对应类实例化,所以就需要的动态代理相关内容,我们所知的已知接口可以使用JDK动态代理为mapper相关生成代理类,放入spring 容器种等待调用 然后就可以使用@Autowired xxxMapper获取具体的实例
    3.mybatis相关代理类生成的时机,已知spring的bean的流程 扫描指定包路径下的Class文件,根据class信息生成对应的BeanDefinition 这里根据时机修改beanDefinition信息也就是为mapper生成代理类 根据BD生成bean实例,把实例放入spring容器中
    4.spring处理的流程是 class-->组建beanDefinition->为mapper生成对应的BeanDefinition >BeanFactory 进行处理,-->beanFactory后续处理,-->实例化生成Bean实例放入spring容器中
    至于如何生成bean就可以由FactoryBean去自定义生成我们需要的mapper的bean对象

    正式环境使用中
    1.使用@MapperScan注解放入需要扫描的mapper的接口包路径
    2.内部使用@Import导入MapperScannerRegistrar.class 来实现生成代理Mapper类的步骤
    3.实现registerBeanDefinition方法扫描@MapperScan注解拿到扫描路径
    4.调用spring类拿到BeanDefinition需要的所有的Mapper接口等待生成代理类
    5.创建的definition设置构造方法传递的是被代理类的Class及我们自己写的Mapper接口,为definition设置beanClass为MapperFacotryBean.class(org.mybatis.spring.mapper.MapperFactoryBean)添加到spring容器中
    6.在实例化bean实例的时候调用MapperFactoryBean 的getObject方法里面使用jdk动态代理生成对应的代理实例,供项目使用
    至此 spring中整合myatis 并合理使用

  • 相关阅读:
    ThinkPHP 3.2.3
    MobaXterm 可替代 XShell4 和 Xftp4
    SourceTree 合并DEV分支到master
    WOX 和 everything 差不多,挺不错也
    function 的入参 如果是指针的话,如果你用的好的话,会颠覆三观啊 这里就是指对象,数组不用考虑 // 夏娃的苹果
    buildFast.js node.js 快速发布到gitee上,这样就不用每次点击,并且自动弹出发布页面,再点击发布,完美!
    velocity.js
    【linux之sed及vim】
    linux curl命令详解
    哈夫曼(huffman)树和哈夫曼编码
  • 原文地址:https://www.cnblogs.com/huan30/p/12936056.html
Copyright © 2011-2022 走看看