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

Spring

时间:2020-09-07 19:20:35      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:应该   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<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

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

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

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