一、Spring框架概览

Spring框架是一种轻量级、一站式解决企业级应用的解决方案。不仅如此,Spring的模块化的特点,可以使你只引用所需要的部分,而无需引用全部。你可以使用控制反转容器(IoC container)、Hibernate集成代码、JDBC抽象层。Spring支持事务管理声明、RMI或Web Service实现远程调用。它能够全部支持MVC框架的全部特性,且能显示集成AOP到代码中。

Spring的设计是非侵入式的(non-intrusive),即领域(domain)逻辑代码通常不依赖于框架本身。现在,已经有数据访问技术和Spring的库出现,来支持集成层(数据访问层),并且容易使用。

1.开始使用Spring

这一系列会包含Spring框架的全部特性的详细信息。如果想快速了解Spring,可以访问https://spring.io/guides 。

2.Spring框架介绍

Spring是一种java平台,其提供了丰富的基础组件(infrastructure),来支持java应用的开发。Spring提供了组件,可以让你更关注于应用本身。

2.1依赖注入(Dependency Injection)和控制反转(Inversion of Control)

先介绍一个小背景:Martin Fowler曾在2004他的个人网站提出了关于控制反转IoC的一个问题:反转的是控件的什么方面?他建议将此修改成一个更好的不言而喻的名字,即后来提出的依赖注入

虽然java平台提供了丰富的函数来支持应用开发,但缺少能够将这些基本构件打包成整体的方式。当然,可以使用Factory,,Abstract Factory,,Builder, Decorator,and Service Locator来组成不同的类和对象,但这些模式是非常简单定式的(指定名字、描述及何处使用等),并且还需要开发者自己去实现。

Spring框架的IoC解决了这一问题,它提供了将不同的组件集成到应用中的一种方法。许多机构和组织都使用Spring框架构件强壮的、持久的应用。

2.2模块(Modules)

Spring框架大约由20种模块组成,被分成以下几大类:核心容器(Core Container)、数据访问集成(Data Access/Integration)、Web、面向切面编程(Aspect Oriented Programming)、工具(Instrumentation)、消息和测试。如下图所示:

下面将会详细介绍每个组件:

核心容器:

包含了spring-core, spring-beans, spring-context, and springexpression(Spring Expression Language)模块。

spring-core 和 spring-beans提供了Spring的基础功能,包含控制反转和依赖注入。BeanFactory是工厂模式的复杂实现,可以将依赖的配置和声明从程序逻辑中分离开来。

spring-context建立在core和beans的基础上,是类似JNDI的一种访问对象的方式。spring-context模块继承了beans模块的特性,并且增加了国际化(例如使用资源包)、事件传播(event propagation)、资源加载、上下文的透明创建(transparent

creation of contexts)。Context也支持JAVA EE的特性,例如EJB、JMX和基础的远程调用。ApplicationContext是context模块的重点。

spring-expression为查询和操作对象提供了丰富的表达式语言(Expression Language)。它是统一表达式语言(unified expression language)的扩展。这种语言支持属性值的get和set,属性赋值,方法调用,命名变量和检索对象。

面向切面编程(AOP)和工具(Instrumentation):

spring-aop提供了面向切面的实现方法,允许定义方法拦截器和切入点。spring-aspects模块集成了AspectJ。

spring-instrument提供了类工具的支持和应用服务器的类装载器的实现。

消息:

Spring 4包含Message,MessageChannel,MessageHandler等。

数据访问集成(Data Access/Integration):

包含JDBC,ORM,OXM,JMS和事务模块。

spring-jdbc提供了JDBC数据库抽象层,减少了冗余的JDBC代码的编写,也不用解析各数据库厂商的错误规范。

Web:

包含spring-web,,spring-webmvc,,spring-websocket,springwebmvc-Portlet模块。

spring-web模块提供了基本的面向web集成的特性,例如多文件上传功能、IoC容器的实例化。也包含了Spring远程支持中web相关的部分。

spring-webmvc模块(即Web-Servlet模块)包含了MVC的实现,使得web和领域模块分离。

spring-webmvc-portlet模块(即Web-Portlet模块)提供了在Portlet中的MVC实现。

Test:

支持Spring框架的单元测试和集成测试。

【未完待续】

参考资料:《Spring Framework Reference Documentation 4.1.1.RELEASE》

Spring mvc 4系列教程(一)的更多相关文章

  1. Spring mvc 4系列教程(三)—— Spring4.X的新特性

    1.Spring4.0的新特性 从2004年Spring的1.0发布后,后面又发布了很多重要的版本:Spring2.0提供了XML命令空间和AspectJ的支持:Spring2.5提出了注解驱动(an ...

  2. Spring mvc 4系列教程(二)——依赖管理(Dependency Management)和命名规范(Naming Conventions)

    依赖管理(Dependency Management)和命名规范(Naming Conventions) 依赖管理和依赖注入(dependency injection)是有区别的.为了将Spring的 ...

  3. ASP.NET MVC 入门系列教程

    ASP.NET MVC 入门系列教程 博客园ASP.NET MVC 技术专题 http://kb.cnblogs.com/zt/mvc/ 一个居于ASP.NET MVC Beta的系列入门文章,有朋友 ...

  4. 使用idea创建spring mvc项目图文教程

    使用idea创建spring mvc项目图文教程 前言: 使用惯了eclipse的朋友,如果刚换成了idea或许有些不习惯.但是使用idea之后,就会love上idea了.本文将通过图文讲解怎么通过i ...

  5. MyBatis整合Spring MVC(易百教程)

    MyBatis是ibatis的升级版,作为hibernate的老对手,它是一个可以自定义SQL.存储过程和高级映射的持久层框架.与Hibernate 的主要区别就是 Mybatis 是半自动化的,而 ...

  6. Spring Data Jpa系列教程--------实体解析和关联关系

    Spring Data Jpa是基于HIbernate开发的,所以建立实体建的实体和映射关系需要好好好的去了解一下,本文有以下内容,实体管理器介绍,实体与数据库表的映射介绍,关联关系(一对多,多对多) ...

  7. 最近无意中看到一个讲解spring mvc的系列,从源码的角度讲解,特记录下来,供以后反复学习

    SpringMVC深度探险(一) —— SpringMVC前传 SpringMVC深度探险(二) —— SpringMVC概览 SpringMVC深度探险(三) —— DispatcherServle ...

  8. Spring MVC (二)注解式开发使用详解

    MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...

  9. Spring MVC新手教程(二)

    第一篇文章宏观讲了Spring MVC概念,以及分享了一个高速入门的样例. 这篇文章主要来谈谈Spring MVC的配置文件. 首先来谈谈web.xml: web项目启动时自己主动载入到内存中的信息, ...

随机推荐

  1. 老树新芽,在ES6下使用Express

    要让Express在ES6下跑起来就不得不用转码器Babel了.首先新建一个在某目录下新建一个项目.然后跳转到这个目录下开始下面的操作. 简单走起 安装babel-cli $ npm install ...

  2. (转)Log4Net 全方位跟踪程序运行

    转自:http://www.cnblogs.com/qingyuan/archive/2011/05/13/2045616.html 前端日子自己写了一个简单的日志跟踪程序,现在目前正在做的一个项目中 ...

  3. How to transfer developer profile to one mac to another mac

    Export developer profile from old mac. In the Xcode Organizer, select your team in the Teams section ...

  4. Phalanx (hdu 2859)

    http://acm.hdu.edu.cn/showproblem.php?pid=2859     Time Limit: 10000/5000 MS (Java/Others)    Memory ...

  5. 如何对CentOS FTP服务配置

    根据很多人对CentOS FTP服务的不解,我觉得应该对CentOS FTP服务做出一定的解释. 1.安装 一般在CentOS上都自动安装了vsftd,若没有安装则可以使用以下步骤进行安装yum -y ...

  6. codeforces982A

    题意 给你个排列    10001 满足下列条件输出yes  否则输出no 1.不能有两个1相连 2.当点排列不能再加入1 全0判断一下 开头判断一下 结尾判断一下 #include <iost ...

  7. python处理excel之读:xlrd模块

    # -*- coding:utf-8 -*- import xlrd path = r'D:/工作簿1(已自动还原).xlsx' # 打开excel文件读取数据 data = xlrd.open_wo ...

  8. mysql 幻象读

    [sql] view plain copy CREATE TABLE `t100` ( `id` bigint(20) NOT NULL default '0', `value` varchar(32 ...

  9. 开发 C# OPC 客户端

    编写 opc 客户端的思路 1. 使用OPC Client浏览服务器, 查看测试代码修改后的结果. 2. 根据OPC Client搜集到的服务器信息编写代码和服务器交互 3. OPC Client 操 ...

  10. Asp.Net Core探索 之 appsettings.json

    appsettings.json是什么? 相信大家在.Net Framework的项目都会用的web.config,app.config这些文件,appsettings.json文件就是Asp.Net ...