Spring
2021-03-30 18:27
标签:应该 opera handle 添加 解析 dynamic view exec 拦截器 概念 关注点(需要增强的地方)、通知(增强的逻辑)、切(时机)。 AspectJ 静态代理。 Spring AOP Spring AOP属于动态代理。 如果目标对象实现了某个接口,那么Spring AOP就会使用JDK动态代理去创建代理对象,调用者调用的是接口,IOC注入的是代理对象;对于没有实现接口的目标对象,使用CGlib动态代理生成一个被代理对象的子类,调用者调用的是父类对象,IOC注入的是子类对象。 web容器启动过程中,创建ApplicationContext。 1) DispatcherServlet接收客户端请求; 2) DispatcherServlet遍历HandlerMapping,根据请求URL查找Handler; 3) DispatcherServlet请求HandlerAdapter执行Handler(使用反射机制进行调用); 4) HandlerAdapter处理完Handler会生成一个ModelAndView对象,并返回给DispatcherServlet; 5) DispatcherServlet请求ViewResolver对ModelAndView对象进行解析; 6) ViewResolver将逻辑视图解析成物理视图View,返回给DispatcherServlet; 7) DispatcherServlet根据View进行视图渲染,完成后发送给客户端。 根据当前请求的找到对应的 Handler,并将 Handler(执行程序)与一堆 HandlerInterceptor(拦截器)封装到 HandlerExecutionChain 对象中。 使用@RequestMapping注解的HandlerMapping实现类是RequestMappingHandlerMapping。 获取的 Handler 的类型是 HandlerMethod,即一个方法对象,它保存了方法的信息(如Method),这样一个 Controller 就可以处理多个请求。 利用反射得到Bean中的Method,将 RequestMappingInfo 作为 key,把 Method 包装成 HandlerMethod 作为 value 添加到了 Map 根据 Handler 来找到支持它的 HandlerAdapter,通过 HandlerAdapter 执行这个 Handler 得到 ModelAndView 对象。 使用@RequestMapping注解的HandlerAdapter实现类是RequestMappingHandlerAdapter。使用反射执行handler方法。 简单工厂 一个工厂类根据传入的参数,动态决定应该获取哪一个产品类,并且只有一个工厂类,不属于23种GOF设计模式之一。ApplicationContext就是简单工厂模式的体现。 单例模式 IOC默认是单例的。 代理模式 AopProxy,使用切面对目标对象进行代理。 策略模式 AopProxy和HandlerMapping。AopProxy可视为抽象策略类,JdkDynamicAopProxy和CglibAopProxy可视为具体策略类,工厂类在创建代理时,根据目标对象是否实现了接口,选择两个具体策略类之一。HandlerMapping可以视为抽象策略类,RequestMappingHandlerMapping和SimpleUrlHandlerMapping可视为具体策略类,DispatcherServlet获取handler时,会根据请求和handlerMapping的匹配情况选用合适的具体策略类。 适配器模式 HandlerAdapter。 Dispatcherservlet调用handlerAdapter,handlerAdapter对handler进行适配。 模板方法 JdbcTemplate。JdbcTemplate类实现了JdbcOperations接口中定义的模板方法。 Spring 标签:应该 opera handle 添加 解析 dynamic view exec 拦截器 原文地址:https://www.cnblogs.com/running-chicken/p/13576006.html11.1 AOP
11.2 MVC
11.2.1 ContextLoaderListener
11.2.2 DispatcherServlet
11.2.3 HandlerMapping
11.2.4 HandlerAdapter
11.3 设计模式
下一篇:c++的绝对阈值