Spring与SpringMVC的区别 & IOC与DI的区别

1.Spring的介绍

  • spring是一个一站式的框架,提供了表现层(SpringMVC)到业务层(Spring)再到数据层(SpringData)的全套解决方案;Spring的两大核心是IOC与AOP,IOC(控制反转,Inversion of Control)与AOP(面向切面编程,Asepct-Orentid-Programming)为程序解耦和代码的简洁提供了支持。
  • 目的:简化Java开发

  • 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能

  • 范围:所有java应用

  • Spring是个轻量级的控制反转和面向切面的容器框架,IOC与AOP可以单独用于任何应用,包括与struts等mvc框架与hibernate等orm框架的集成。

2.SpringMVC的介绍

  • SpringMVC给Spring的表现层提供支持

  • SpringMVC的流程:(转自他人博客)

    1. 用户发送请求至前端控制器DispatcherServlet;

    2. DispatcherServlet收到请求调用HandlerMapping处理器映射器;

    3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;

    4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器,执行处理器(Controller,也叫后端控制器);

    5. Controller执行完成返回ModelAndView,并返回给HandlerAdapter,HandlerAdapter将结果返回给DispatcherServlet;

    6. DispatcherServlet将ModelAndView传给ViewReslover视图解析器,ViewReslover解析后返回具体View给DispatcherServlet;

    7. DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)后返回给给客户

  • SpringMVC就是一个MVC模式的web开发框架,都属于Spring,SpringMVC需要有Spring的jar包作为支撑才能跑起来

3.AOP与IOC

  • AOP与IOC给Spring的业务层提供支持,使程序松耦合,代码简洁
  • AOP原理:即面向切面编程,就是提取公共部分,集中解决一些公共问题
  • IOC原理:控制反转,在传统过程中,当某一个对象依赖于另一个对象时,会由该对象去创建另外一个对象。但是有了IOC之后,将创建过程交给IOC,由spring创建Bean,从而只需给该对象注入即可。

4.IOC与DI的区别与联系

(1)IOC:控制反转(Inversion of Control)

  • 传统资源查找方式:要求组件向容器发起请求,查找资源作为回应,容器适时返回资源。
  • IOC查找方式:容器主动将资源提供给它所管理的组件,组件只需要选择一个合适的方式来接收资源。
  • 创建对象实例的控制权由代码控制转移到IOC容器控制(new关键字转移到容器),即在XML文件中控制,控制权转移即所谓的反转,侧重于原理。

(2)DI:依赖注入(Dependecy Injection)

  • IOC另一种表达方式:组件以一些预先定义好的方式(如setter\getter)接收来自容器的资源注入。
  • 相对于IOC,DI更直接
  • 创建对象实例时,为这个对象注入属性值和其他对象实例,侧重于实现。

(3)属性注入

  • set方法注入bean的属性值或依赖的对象

  • name属性:制定bean属性set方法后的属性名

  • value属性:可以使(value)子节点指定属性值

(4)构造器注入

  • 通过构造器注入bean属性值或依赖对象,它保证bean实例在实例化后可以使用 。

(5)区别

  • 他们是spring核心思想的不同方面的描述

  • 依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是他们描述的角度不同

  • 依赖注入是从应用程序的角度在描述,应用程序依赖容器创建并注入它所需要的外部资源

  • 控制反转是从容器的角度在描述,容器控制应用程序,而容器反向的向应用程序注入应用程序所需要的外部资源

​​​​​​​初学,部分借鉴他人博客做的总结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值