Spring

2021-03-30 18:27

阅读:607

标签:应该   opera   handle   添加   解析   dynamic   view   exec   拦截器   

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 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

标签:应该   opera   handle   添加   解析   dynamic   view   exec   拦截器   

原文地址:https://www.cnblogs.com/running-chicken/p/13576006.html


评论


亲,登录后才可以留言!