码迷,mamicode.com
首页 > 编程语言 > 详细

spring代理模式 service远程调用,插件执行

时间:2016-06-17 17:05:26      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

  最近,研究了一下平台远程调用的过程,和service层插件执行的原理,记录一下。

  1、远程service调用过程

  首先看一下类的继承结构

封装调用处理过程

技术分享

封装service调用接口

技术分享

封装service请求信息

技术分享

封装请求信息处理类

技术分享

 

 

 先描述一个调用过程:

  平台在controller里面获取service的时候都是通过lookup方式(就是用了spring查找service的bean对象的代理对象),远程的service配到配置文件里面,所以在lookup的时候,如果配置文件中有的service,返回代理对象的时候,InvocationHandler其实是子类RemoteInvocationHandler,如果是本地service,那InvocationHandler其实是子类LocalInvocationHandler.

  service执行相关方法的时候,调用的是AbstractInvocationHandler的invoke方法,这个方法做什么呢?这个方法封装ServiceRequest对象,如果是远程service,其实就是RemoteServiceRequest,本地service的话是LocalServiceRequest对象,然后调用ServiceInvoker的invokeService方法,参数就是ServiceRequest对象。

  ServiceInvoker的invokeService方法做什么呢?这个方法里面调用AbstractServiceRequestHandler的handleReuqest方法,参数为ServiceRequest对象。根据ServiceRequest对象就能知道是否为远程请求,若是,AbstractServiceRequestHandler实例其实指向的是RemoteServiceRequestHandler对象。

 2、service层插件执行

  这个其实就是在上面所述的AbstractServiceRequestHandler的handleReuqest方法中,找到方法执行前的插件,方法执行后的插件,都执行了一遍。插件就是在service方法执行前后要进行的一些逻辑处理。

 

终于理清了思路,记录一下。

spring代理模式 service远程调用,插件执行

标签:

原文地址:http://www.cnblogs.com/wangxufeng/p/5594274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!