Spring mvc 4系列教程(一)
一、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系列教程(一)的更多相关文章
- Spring mvc 4系列教程(三)—— Spring4.X的新特性
1.Spring4.0的新特性 从2004年Spring的1.0发布后,后面又发布了很多重要的版本:Spring2.0提供了XML命令空间和AspectJ的支持:Spring2.5提出了注解驱动(an ...
- Spring mvc 4系列教程(二)——依赖管理(Dependency Management)和命名规范(Naming Conventions)
依赖管理(Dependency Management)和命名规范(Naming Conventions) 依赖管理和依赖注入(dependency injection)是有区别的.为了将Spring的 ...
- ASP.NET MVC 入门系列教程
ASP.NET MVC 入门系列教程 博客园ASP.NET MVC 技术专题 http://kb.cnblogs.com/zt/mvc/ 一个居于ASP.NET MVC Beta的系列入门文章,有朋友 ...
- 使用idea创建spring mvc项目图文教程
使用idea创建spring mvc项目图文教程 前言: 使用惯了eclipse的朋友,如果刚换成了idea或许有些不习惯.但是使用idea之后,就会love上idea了.本文将通过图文讲解怎么通过i ...
- MyBatis整合Spring MVC(易百教程)
MyBatis是ibatis的升级版,作为hibernate的老对手,它是一个可以自定义SQL.存储过程和高级映射的持久层框架.与Hibernate 的主要区别就是 Mybatis 是半自动化的,而 ...
- Spring Data Jpa系列教程--------实体解析和关联关系
Spring Data Jpa是基于HIbernate开发的,所以建立实体建的实体和映射关系需要好好好的去了解一下,本文有以下内容,实体管理器介绍,实体与数据库表的映射介绍,关联关系(一对多,多对多) ...
- 最近无意中看到一个讲解spring mvc的系列,从源码的角度讲解,特记录下来,供以后反复学习
SpringMVC深度探险(一) —— SpringMVC前传 SpringMVC深度探险(二) —— SpringMVC概览 SpringMVC深度探险(三) —— DispatcherServle ...
- Spring MVC (二)注解式开发使用详解
MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...
- Spring MVC新手教程(二)
第一篇文章宏观讲了Spring MVC概念,以及分享了一个高速入门的样例. 这篇文章主要来谈谈Spring MVC的配置文件. 首先来谈谈web.xml: web项目启动时自己主动载入到内存中的信息, ...
随机推荐
- 老树新芽,在ES6下使用Express
要让Express在ES6下跑起来就不得不用转码器Babel了.首先新建一个在某目录下新建一个项目.然后跳转到这个目录下开始下面的操作. 简单走起 安装babel-cli $ npm install ...
- (转)Log4Net 全方位跟踪程序运行
转自:http://www.cnblogs.com/qingyuan/archive/2011/05/13/2045616.html 前端日子自己写了一个简单的日志跟踪程序,现在目前正在做的一个项目中 ...
- 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 ...
- Phalanx (hdu 2859)
http://acm.hdu.edu.cn/showproblem.php?pid=2859 Time Limit: 10000/5000 MS (Java/Others) Memory ...
- 如何对CentOS FTP服务配置
根据很多人对CentOS FTP服务的不解,我觉得应该对CentOS FTP服务做出一定的解释. 1.安装 一般在CentOS上都自动安装了vsftd,若没有安装则可以使用以下步骤进行安装yum -y ...
- codeforces982A
题意 给你个排列 10001 满足下列条件输出yes 否则输出no 1.不能有两个1相连 2.当点排列不能再加入1 全0判断一下 开头判断一下 结尾判断一下 #include <iost ...
- python处理excel之读:xlrd模块
# -*- coding:utf-8 -*- import xlrd path = r'D:/工作簿1(已自动还原).xlsx' # 打开excel文件读取数据 data = xlrd.open_wo ...
- mysql 幻象读
[sql] view plain copy CREATE TABLE `t100` ( `id` bigint(20) NOT NULL default '0', `value` varchar(32 ...
- 开发 C# OPC 客户端
编写 opc 客户端的思路 1. 使用OPC Client浏览服务器, 查看测试代码修改后的结果. 2. 根据OPC Client搜集到的服务器信息编写代码和服务器交互 3. OPC Client 操 ...
- Asp.Net Core探索 之 appsettings.json
appsettings.json是什么? 相信大家在.Net Framework的项目都会用的web.config,app.config这些文件,appsettings.json文件就是Asp.Net ...