Spring和SpringMVC架构

1人阅读 评论(0) 收藏 举报
分类:

1. 前言

常用的JAVA常用的开发框架,可用来进行快速并行开发

2. Spring框架

说到spring框架,就要讲到它的两个概念-IOC(反转控制)和DI(依赖注入)。

1.1 IOC

首先想说说IoC(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好、qq号、电话号、ip号、iq号………,想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节。传统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。

  那么IoC是如何做的呢?有点像通过婚介找女朋友,在我和女朋友之间引入了一个第三者:婚姻介绍所。婚介管理了很多男男女女的资料,我可以向婚介提出一个列表,告诉它我想找个什么样的女朋友,比如长得像李嘉欣,身材像林熙雷,唱歌像周杰伦,速度像卡洛斯,技术像齐达内之类的,然后婚介就会按照我们的要求,提供一个mm,我们只需要去和她谈恋爱、结婚就行了。简单明了,如果婚介给我们的人选不符合要求,我们就会抛出异常。整个过程不再由我自己控制,而是有婚介这样一个类似容器的机构来控制。Spring所倡导的开发方式就是如此,所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

1.2 DI

IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? Java
1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。

3. SpringMVC框架

SpringMVC流程
1、 用户发送请求至前端控制器DispatcherServlet。

2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、 处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、 DispatcherServlet调用HandlerAdapter处理器适配器。

5、 HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。

6、 Controller执行完成返回ModelAndView。

7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。

8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器。

9、 ViewReslover解析后返回具体View。

10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。

11、 DispatcherServlet响应用户。

查看评论

在VC中实现程序在启动时隐藏

    最近经常见论坛上有人问,程序在启动时如何隐藏。以下是我总结的一些方法,欢迎大家讨论,找出更好的方法。    对于这类问题,大家最容易想到的可能就是在PreCreateWindow中添加cs.s...
  • AttaBoy
  • AttaBoy
  • 2002-03-03 09:18:00
  • 1205

Spring MVC架构原理

Spring MVC架构原理: 1.发起请求到前端控制器:DispatcherServlet  DispatcherServlet 减少了其他控件的耦合性 2前端控制器请求HandlerMapper查...
  • qq_21503199
  • qq_21503199
  • 2015-09-22 00:10:17
  • 557

Spring MVC框架简介和使用

  • 2017年07月22日 16:20
  • 1.01MB
  • 下载

spring MVC myeclipse例子

  • 2016年04月19日 10:48
  • 16.38MB
  • 下载

SpringMVC增删改

  • 2016年08月16日 05:50
  • 11.67MB
  • 下载

【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)

上篇博文,我们简单的介绍了什么是SpringMVC,这篇博文,我们搭建一个简单SpringMVC的环境,使用非注解形式实现一个HelloWorld实例,从简单入手,逐步深入。...
  • jiuqiyuliang
  • jiuqiyuliang
  • 2015-07-31 00:08:04
  • 13301

springmvc入门实例

  • 2017年10月07日 21:32
  • 4.48MB
  • 下载

spring mvc架构

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码...
  • drdairen
  • drdairen
  • 2017-08-07 10:51:51
  • 220

springMVC架构图

大学生的学习节奏就是慢啊!烦心事太多,学习也不如意,哎,接着我的菜鸟之路吧之路!下面贴一张图 这是今天我看完springMVC的相关视频后自己画的流程图,图是用ProcessOn画的,不是太喜欢它的...
  • qq_36157439
  • qq_36157439
  • 2017-11-14 20:20:07
  • 1011

BASM学习心得(字符串存储方式)

字符串如何存储以"hello"为例============================68656c6c6f16进制寄存器存储的时候为============================6c6c...
  • ttch
  • ttch
  • 2006-08-23 17:29:00
  • 1570
    个人资料
    等级:
    访问量: 275
    积分: 32
    排名: 194万+
    文章分类
    文章存档