spring与springmvc

转自:spring与springmvc的区别与联系


一、spring框架的介绍

  spring是一个一站式的框架,提供了表现层(springmvc)到业务层(spring)再到数据层(springdata)的全套解决方案;spring的两大核心IOC(控制反转)和AOP(面向切面编程)更是给我们的程序解耦和代码的简介提供了支持。

二、springmvc

(1)springmvc给spring的表现层提供支持

(2)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进行渲染视图(即将模型数据填充至视图中)后返回给客户

三、AOP与IOC

(1)AOP与IOC给spring的业务层提供支持,使程序的耦合度更低,代码更简洁

(2)AOP原理:即面向切面编程,就是提取公共部分,集中解决一些公共问题

(3)IOC原理:控制反转。在传统过程中,当某一个对象依赖于另外一个对象时,会由该对象去创建另外一个对象,有了ioc后,将创建过程交给IOC,由spring创建bean,从而只需给该对象注入即可

  
问:什么是AOP和IOC,它们的作用是什么?

  AOP:(Aspect Oriented Programing) 面向切面编程。
    是指使用动态代理模式,在一个事务中无缝地插入多条其他处理。

  作用:Spring使用aop声明式事务控制,通过横向抽取方法将service层中的事务控制的代码抽取出来。
  
  IOC: (Inverse of Control) 控制反转。
    是指将原来程序中自己创建实现类对象的控制权反转到IOC容器中。只需要通过IOC来获对象的实例,将IOC当成一个黑盒子、工厂。

  作用:Spring提供ioc容器,对 bean进行实例化。使用bean时候从容器中取。还可以实现依赖注入(DI),将对象需要的bean注入到其对象属性中。
  
拓展:AOP的概念

  Aspected Oriented Programming 面向方面编程。

  好处:AOP将程序分解成各个方面或者说关注点。这使得可以模块化,相当横向上分切了。它可以解决OOP和过程化方法不能够很好解决的横切(crosscut)问题,如:事务、安全、日志等横切关注。

实现AOP有几种方式:
  1.Spring 1.2版本中通过ProxyFactoryBean来实现aop,即通过动态代理来实现的,Aspect必须继承MethodBeforeAdvice,MethodAfterAdvice等。
  2.Spring 2.0 AOP需要改的是FBI 这个类,而且它也不需要再实现某些接口。
  3.三使用标注(@AspectJ)实现AOP。

AOP 和 OOP的区别:
  1.面向方面编程 AOP 偏重业务处理过程的某个步骤或阶段,强调降低模块之间的耦合度,使代码拥有更好的移植性。
  2.面向对象编程 (oop) 则是对业务分析中抽取的实体进行方法和属性的封装。
  也可以说 AOP 是面向业务中的动词领域, OOP 面向名词领域。
  AOP 的一个很重要的特点是源代码无关性,也就是说如果我们的系统中引用了 AOP 组件,即使我们把该组件去掉,系统代码也应该能够编译通过。要实现这一点,可以使用动态 proxy 模式。

---------------- The End ----------------
0%