Spring原理、流程(内部最核心的就是IOC了)
Spring目的就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明
管理的(Spring根据这些配置 内部通过反射去动态的组装对象)
Spring里用的最经典的一个设计模式就是:模板方法模式。
Spring AOP与IOC
1. IoC(Inversion of control): 控制反转
概念:控制权由对象本身转向容器;由容器根据配置文件去创建实例并创建各个实例之间的依赖关系
动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射其实就
是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创
建对象,和调用对象里的方法的 。
核心:bean工厂;在Spring中,bean工厂创建的各个实例称作bean
二、AOP(Aspect-Oriented Programming): 面向方面编程
Spring还有一个核心就是AOP面向切面编程,可以为某一类对象进行监督和控制(也就是在调用这
类对象的具体方法的前后去调用你指定的模块)从而达到对一个模块扩充的功能。这些都是通过配置
类达到的。
代理方式1:静态代理:
针对每个具体类分别编写代理类;
针对一个接口编写一个代理类;
代理方式2:动态代理:
针对一个方面编写一个InvocationHandler,然后借用JDK反射包中的Proxy类为各种接口动态生成相应的代理类
SpringMVC原理、流程
在整个Spring MVC框架中,DispatcherServlet处于核心位置,它负责协调和组织不同组件完成请求处理并返回响应的工作。具体流程为:
1)客户端发送http请求,web应用服务器接收到这个请求,如果匹配DispatcherServlet的映射路径(在web.xml中配置),web容器将请求转交给DispatcherServlet处理;
2)DispatcherServlet根据请求的信息及HandlerMapping的配置找到处理该请求的Controller;
3)Controller完成业务逻辑处理后,返回一个ModelAndView给DispatcherServlet;
4)DispatcherServlet借由ViewResolver完成ModelAndView中逻辑视图名到真实视图对象View的解析工作;
5)DispatcherServlet根据ModelAndView中的数据模型对View对象进行视图渲染,最终客户端得到的响应消息可能是一个普通的html页面,也可能是一个xml或json串,甚至是一张图片或一个PDF文档等不同的媒体形式。