1. Spring MVC简介

  Spring MVC是java EE平台请求驱动类型的轻量级Web框架,使用了MVC设计模式的思想,spring框架的主要优势之一就是分层架构,分层架构允许选择使用任何一个组件,同时也可以集成其它框架技术,例如:Struts2、Hibernate等

  Spring框架具有以下特点:

  1. 方便解耦,简化开发。通过spring3提供的IoC容器,可以将对象之间的依赖关系交由Spring3控制,避免编码所造成的程序过度耦合

  2. AOP编程的支持。通过Spring3提供的AOP功能,方便进行面向切面编程,许多不容易使用面向对象程序设计(OOP)实现的功能可以通过AOP轻松实现

  3. 声明式事务的支持。通过声明方式灵活地进行事务管理,提高开发效率和质量

  4. 方便集成各种优秀框架。

  Spring框架各个组件的功能:

  1. 核心容器

  核心容器提供Spring3框架基本的功能。核心容器的主要组件是BeanFactory和ApplicationContext。容器使用控制反转(IoC)模式将应用程序的配置和依赖性规范和实际的应用程序代码分开。

  2. Spring上下文

  Spring上下文是一个配置文件,向Spring框架提供上下文信息。Spring上下文包括企业服务,例如,校验、JNDI、EJB、电子邮件、国际化等

  3. Spring AOP

  通过配置管理特性,Spring AOP模块直接将面向切面的编程功能集成到Spring框架中,pring AOP模块提供了事务管理服务。

  4. Spring DAO

   JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。

  5. Spring ORM

  Spring插入了若干个ORM框架,从而提供了ORM的工具,其中包括JDO、Hibernate、iBatisSQL Map。

2. Spring IoC(控制反转)

  IoC是Inversion of Control的缩写,就是通过IoC容器来实现对象组件的装配和管理。也就是说,所有组件都是被动的,所有的组件初始化和调用都由IoC容器负责。

  Spring IoC经常用到一个设计模式——工厂模式,工厂模式提供创建对象的接口。

  Spring框架两个最基本的包是:org.springframework.beans.factory(主要接口是BeanFactory)和org.springframework.context(主要接口是ApplicationFactory)

  IoC主要组件:

  1. Beans

  Beans指项目中提供业务功能Bean,即IoC容器要管理的Bean,Bean可以包含一些属性的getter和setter方法,也可以包含其他方法

  2. 配置文件

  Spring对Bean的管理在配置文件中进行.Bean的配置文件是一个xml文件,他通常命名为beans.xml、applicationContext.xml等,配置文件包含Bean的id、类、属性及其值。IoC容器通过Bean的id从Bean配置文件中取得Bean的类,并生成该配置文件的一个对象。

  3. BeanFactory接口及其相关类

  BeanFactory采用了工厂设计模式,即Bean容器模式,负责读取Bean的配置文件,管理对象的生成、加载,维护对象之间的依赖关系,负责Bean对象的生命周期。

  org.springframework.beans.factory.BeanFactory是一个顶级接口,它包含管理Bean的各种方法,例如:getBean(String name),,根据Bean的id生成Bean的对象

  4. ApplicationContext接口及其相关类

  ApplicationContext接口提供高级功能的容器,例如:提供访问资源文件的更方便的方法,支持国际化等

  注入的两种方式:

  1. 设置注入

  设置注入是通过setter方法注入被调用者的实例

  2.构造注入

  利用构造方法来设置依赖注入

3. Spring AOP(面向切面编程)

  AOP为Aspect Oriented Programming的缩写,即面向切面编程(也叫面向方面),是一种可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。

  使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。这些系统性的编程工作都可以独立编码实现,然后通过AOP技术切入进系统即可。

  AOP分为静态AOP和动态AOP。静态AOP是指AspectJ实现的AOP,他是将切面代码直接编译到Java类文件中。动态AOP是指将切面代码进行动态织入实现的AOP。Spring的AOP为动态AOP,实现的技术为:JDK提供的动态代理技术 和 CGLIB(动态字节码增强技术)。尽管实现技术不一样,但都是基于代理模式,都是生成一个代理对象

Spring MVC Web框架的更多相关文章

  1. Spring MVC + jpa框架搭建,及全面分析

    一,hibernate与jpa的关系 首先明确一点jpa是什么?以前我就搞不清楚jpa和hibernate的关系. 1,JPA(Java Persistence API)是Sun官方提出的Java持久 ...

  2. 使用Maven创建一个Spring MVC Web 项目

    使用Maven创建java web 项目(Spring MVC)用到如下工具: 1.Maven 3.2 2.IntelliJ IDEA 13 3.JDK 1.7 4.Spring 4.1.1 rele ...

  3. hibernate+spring+mvc+Easyui框架模式下使用grid++report的总结

    最近刚开始接触hibernate+spring+mvc+Easyui框架,也是刚开通了博客,希望能记录一下自己实践出来的东西,让其他人少走弯路. 转让正题,以个人浅薄的认识hibernate对于开发人 ...

  4. Spring MVC 学习总结(十)——Spring+Spring MVC+MyBatis框架集成(IntelliJ IDEA SSM集成)

    与SSH(Struts/Spring/Hibernate/)一样,Spring+SpringMVC+MyBatis也有一个简称SSM,Spring实现业务对象管理,Spring MVC负责请求的转发和 ...

  5. Spring MVC测试框架

    原文链接:http://jinnianshilongnian.iteye.com/blog/2004660 Spring MVC测试框架详解——服务端测试 博客分类: springmvc杂谈 spri ...

  6. Spring MVC测试框架详解——服务端测试

    随着RESTful Web Service的流行,测试对外的Service是否满足期望也变的必要的.从Spring 3.2开始Spring了Spring Web测试框架,如果版本低于3.2,请使用sp ...

  7. [读后感]spring Mvc 教程框架实例以及系统演示下载

    [读后感]spring Mvc 教程框架实例以及系统演示下载 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&qu ...

  8. 转载:如何让spring mvc web应用启动时就执行

    转载:如何让spring mvc web应用启动时就执行特定处理 http://www.cnblogs.com/yjmyzz/p/4747251.html# Spring-MVC的应用中 一.Appl ...

  9. 新建 Spring Mvc Web + Maven 的 maven 错误 (二)

    新建项目后,可能由于哪边配置不正确,或也可能是编码问题,就有可能在创建初始就可能发生错误: 这是 pom.xml 中提示的错误,有的人说要删除 maven 的本地仓库位置:c:\用户[Users]\A ...

随机推荐

  1. linux服务之irqbalance

    irqbalance 理论上:启用 irqbalance 服务,既可以提升性能,又可以降低能耗.irqbalance 用于优化中断分配,它会自动收集系统数据以分析使用模式,并依据系统负载状况将工作状态 ...

  2. POI中getLastRowNum() 和getLastCellNum()的区别

    hssfSheet.getLastRowNum();//最后一行行标,比行数小1 hssfSheet.getRow(k).getLastCellNum();//获取列数,比最后一列列标大1

  3. POST内容太大的问题

    背景: 最近项目进入尾声,需要做交付测试,发现CMS生成页面在反复修改保存多次后,由于页面存在动态加载js的缘故,使得页面的内容越来越大,最终出现页面没有办法保存(ajax post将页面的内容发送给 ...

  4. 【巩固】CSS3的3D动画 ——3D旋转(1)

    最近学了妙味的css3的动画,2D,3D的都有,先写一个最简单的3d翻转效果,鼠标移入div,正反面翻转效果. 注意点有: 要给正反面外面加个父级: transform-style: preserve ...

  5. 安装 python psutil 包

    yum install python-pip 下载 psutil https://pypi.python.org/pypi?:action=display&name=psutil#downlo ...

  6. (转)DataGridView多维表头及其扩展功能

    dataGridView1.RowHeadersVisible = false;把整行选中那一列去掉.如果需要整行选中,新增一按钮列模拟实现.上源码:多维DataGridView 有个简易的方法: 1 ...

  7. unity3d 镜头随鼠标移动

    using UnityEngine; using System.Collections; public class sheji : MonoBehaviour { public int speed = ...

  8. Objective-C中的@property和@synthesize用法

    @代表“Objective-C”的标志,证明您正在使用Objective-C语言 Objective-C语言关键词,@property与@synthesize配对使用. 功能:让编译好器自动编写一个与 ...

  9. [VB.NET]调用系统的文件夹选择对话框

    以下示例代码展示如何调用系统的文件夹选择对话框: Private Function SelectFolder(ByVal Describe As String, Optional ByVal Show ...

  10. Vs打包工程 错误: Unable to update the dependencies of the project (转)

    Setup Project 错误: Unable to update the dependencies of the project 在VS2010中编译包含安装工程的解决方案提示错误:Unable ...