zoukankan      html  css  js  c++  java
  • mybatis插件原理

    Executor(update、query、flushstatement、commit、rollback、getTransaction)

    ParameterHandler(getParameterObject、setParameter、close、isclosed)

    ResultSetHandler(handlerResultSets,handlerOutputParameters)

    statementHandler(prepare,parameterize,batch,update,query)

    1、每个创建出来的对象不是直接返回的,而是interceptorChain.pluginAll(parameterHandler)

    2、获取到所有的Interceptor(拦截器)插件需要实现的接口,调用interceptor.plugin(target)返回target包装的对象

    3、插件机制:使用插件为目标对象创建一个代理对象(AOP面向切面)

    Interceptor(拦截器)拦截目标对象的目标方法的执行

    Plugin:包装目标方法:包装,为目标对象创建一个代理对象,插件会创建目标对象的代理对象

    插件编写:

    1、编写Interceptor的实现类

    2、使用@Interceptors注解完成插件签名

    3、将写好的插件注册到全局配置文件中

    创建动态代理的时候,是按照插件配置顺序创建层层的代理对象,执行目标方法后按照逆向顺序执行

  • 相关阅读:
    62. Unique Paths
    24. Swap Nodes in Pairs
    83. Remove Duplicates from Sorted List
    21. Merge Two Sorted Lists
    141. Linked List Cycle
    268. Missing Number
    191. Number of 1 Bits
    231. Power of Two
    9. Palindrome Number
    88. Merge Sorted Array
  • 原文地址:https://www.cnblogs.com/cye9971-/p/11164640.html
Copyright © 2011-2022 走看看