Spring
11.1 AOP
概念
关注点(需要增强的地方)、通知(增强的逻辑)、切(时机)。
AspectJ
静态代理。
Spring AOP
Spring AOP属于动态代理。
如果目标对象实现了某个接口,那么Spring AOP就会使用JDK动态代理去创建代理对象,调用者调用的是接口,IOC注入的是代理对象;对于没有实现接口的目标对象,使用CGlib动态代理生成一个被代理对象的子类,调用者调用的是父类对象,IOC注入的是子类对象。
11.2 MVC
11.2.1 ContextLoaderListener
web容器启动过程中,创建ApplicationContext。
11.2.2 DispatcherServlet
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进行视图渲染,完成后发送给客户端。
11.2.3 HandlerMapping
根据当前请求的找到对应的 Handler,并将 Handler(执行程序)与一堆 HandlerInterceptor(拦截器)封装到 HandlerExecutionChain 对象中。
使用@RequestMapping注解的HandlerMapping实现类是RequestMappingHandlerMapping。 获取的 Handler 的类型是 HandlerMethod,即一个方法对象,它保存了方法的信息(如Method),这样一个 Controller 就可以处理多个请求。
利用反射得到Bean中的Method,将 RequestMappingInfo 作为 key,把 Method 包装成 HandlerMethod 作为 value 添加到了 Map<T, HandlerMethod> handlerMethods 中。
11.2.4 HandlerAdapter
根据 Handler 来找到支持它的 HandlerAdapter,通过 HandlerAdapter 执行这个 Handler 得到 ModelAndView 对象。
使用@RequestMapping注解的HandlerAdapter实现类是RequestMappingHandlerAdapter。使用反射执行handler方法。
11.3 设计模式
简单工厂
一个工厂类根据传入的参数,动态决定应该获取哪一个产品类,并且只有一个工厂类,不属于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
原文地址:https://www.cnblogs.com/running-chicken/p/13576006.html