SpringIOC、DI、MVC的基本执行原理

一 、SpringIOC:
 
控制反转,指控制权反转,不需要手动new对象实例,交给spring来完成。
我们只需要写好配置文件,定义好bean,和注解。这是通过IOC容器来实现的。
Spring会:读取配置文件——扫描相关类——初始化这些类的实例——放入IOC 容器(map)中(为DI做准备)。
 
 
1、通过 ApplicationContext ,抓取配置文件或注解,使用 BeanFactory 工厂通过反射生成 BeanDifenition 定义;
2、实例化对象(如果有aop 存在,实例化代理对象),将实例化对象封装成 BeanWrapper 对象,并放入 IOC 容器。
3、IOC容器不止是一个容器,而是多个。eg:单例对象缓存容器、单例工厂缓存容器、earlySingleObjects 提前曝光的单例对象缓存
4、为什么要多一层 Wrapper ,为了保护Bean 对象不被直接的非法调用,换句话说,所有的对象访问都要通过 IOC 容器,拒绝直接访问对象本身的实例化对象。
 
 
 
二、 DI: 依赖注入。
 
    A依赖于B(可理解为B是A的一个属性),当我们在A中调用B时,不需要new B了。因为IOC容器中就有B的实例,
而且spring会将B实例注入到A中(给A中的B属性赋值)。
 
    以上不管是IOC的初始化还是DI,都是利用反射来执行。
 
    IOC和DI ,实际就是DispatchServlet的内容,是Spring MVC的重要部分
 
 
三、 MVC: Model View Controller。
 
1 、根据浏览器里的url,怎么找到java类里的方法的?
 
    主要依赖于IOC和DI 在浏览器里访问url,可以直接执行java类中的某方法上。加载web.xml配置文件时,读取xml文件里的DispatchServlet(初始化IOC,DI,和handleMapping)(handleMapping:保存了在controller中定义的url,和method的对应关系),根据url到handleMapping中找到对应的metood,并执行该moethod。 这样就把浏览器url访问到java类里的方法了!
 
2、SpringMVC运行原理
 
 
流程说明:
 
(1)客户端(浏览器)发送请求,直接请求到DispatcherServlet。
 
(2)DispatcherServlet根据请求信息调用HandlerMapping,解析请求对应的Handler。
 
(3)解析到对应的Handler后,开始由HandlerAdapter适配器处理。
 
(4)HandlerAdapter会根据Handler来调用真正的处理器开处理请求,并处理相应的业务逻辑。
 
(5)处理器处理完业务后,会返回一个ModelAndView对象,Model是返回的数据对象,View是个逻辑上的View。
 
(6)ViewResolver会根据逻辑View查找实际的View。
 
(7)DispaterServlet把返回的Model传给View。
 
(8)通过View返回给请求者(浏览器)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值