占位 从dispatcher说起,方法doDispatch(Map request)的参数request是一个通过解析来报报文新城的map //获取HandlerExecutionChain,其中封装了handler和List<HandlerInterceptor> HandlerExecutionChain mappedHandler = getHandler(request); 1.根据request得到一个执行链,查找的基础是已经注册过,注册之后在DefaultAnnotationHan…
这要从DefaultAnnotationHandlerMapping这个类说起,该类被@Component注释,该类被Spring IOC容器实例化之后,将会执行其initApplicationContext方法(该方法在其父类中得到实现) 主要的几个类的继承关系如上图,其中ApplicationObjectSupport是由SpringFrameWork提供的抽象类 上图是ApplicationObjectSupport类中的两个方法,该类实现了ApplicationContextAware接…
从DispatcherServlet说起,本文讨论的内容都是DispatcherServlet的doDispatch方法完成 mappedHandler是一个HandlerExecutionChain,其中封装了一个handler,和一个由interceptor组成的list 如果这张图够高,往下能看到handler是如何执行的,不过不是handler.execute()这样的形式,而是由这样的: // Actually invoke the handler.mv = ha.handle(pro…
这篇随笔的许多知识来源于:http://www.importnew.com/19391.html 之所以会去看这些东东,主要是希望能够模仿spring mvc的处理流程,做出一套合理的交易处理流程. 之前已经根据网上查到的知识,做了一些尝试,只要按照如下流程,就可以使用自定义的命名空间: 1.通过在spring的配置文件中配置自己的命名空间 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q…
决定模仿spring mvc的dispatcher->handlerMapping(return executorChain)->handler.execute 这样的流程之后,就开始看spring mvc的源代码. 因为我也自定义了标签,来做交易名映射,根据交易名找到处理类.所以我着重需要看的,就是spring mvc是如何根据url找到对应的handler的. 既然要找,首先要有个找的地方,spring mvc是这样做的,它搞了AbstractDetectingUrlHandlerMapp…
在做项目过程中,突然发现,项目中启动了多个线程,但是只有一个handler,而不需要每一个线程单独开一个handler,记下笔记: handler = new Handler() { @Override public void handleMessage(Message msg) { String rs_result=null; //结果解析json中的result String rs_msg=null; //json解析后的msg String _rs = msg.obj.toString()…
写这篇日志的时候,我已经完成了这个目标,并且中间经历了一次面试.现在回过头看,已经觉得印象不那么深刻了,果然还是一边思考,一边记录这样最好.但我还是严格要求自己,从新做了梳理,对相关配置进行了整理和说明,以下. 谁是启动类 既然是构建可执行的JAR包,首先要明确启动类是谁.一开始做的时候,我是使用的自己写的启动类 public static void main(String[] args) { new ClassPathXmlApplicationContext("classpath:META-…
当交易由Action进入Service之前,需要根据不同的Service实际负责业务的不同,真正执行Service的业务逻辑之前,做一些检查工作.这样的拦截器应该是基于配置的,与Service关联起来的. /** * @author wangxin * @contact 408657544@qq.com * @date Jul 22, 2017 * @Description: 所有TransactionController的抽象父类,主要作用为以一种低耦合的方式调用Service */ publ…
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!-- 是…
几天前遇到的这个问题.由于交易是配置的,不同的交易是同一个类的不同实例,所以不可能提前将其以@autowired类似的方式注入到需要的类中 <op:transaction id="Recharge" template="TransTemplate"></op:transaction> <op:transaction id="QueryAgreementAcct" template="TransTemplat…