1.Spring 的整体架构

  Spring框架主要由7大模块组成,它们提供了企业级开发需要的所有功能,而且每个模块都可以单独使用,也可以和其他模块组合使用,灵活且方便的部署可以使开发的程序更加简洁灵活。上图所示即7个模块的部署示意图。

1)核心模块

Spring Core模块是Spring的核心容器,它实现了IOC模式,提供了Spring框架的基础功能。此模块中包含的BeanFactory类是Spring的核心类,负责JavaBean的配置与管理。它采用Factory模式实现了IOC即依赖注入。谈到JavaBean,它是一种 Java 类,它遵从一定的设计模式,使它们易于和其他开发工具和组件一起使用。定义 JavaBean 是一种JAVA 语言写成的可重用组件。要编写JavaBean,类必须是具体类和公共类,并且具有无参数的构造器。

2)Context模块

Spring Context模块继承BeanFactory(或者说Spring核心)类,并且添加了事件处理、国际化、资源装载、透明装载、以及数据校验等功能。它还提供了框架式的Bean的访问方式和很多企业级的功能,如JNDI访问、支持EJB、远程调用、集成模板框架、Email和定时任务调度等。

3)AOP模块

Spring集成了所有AOP功能。通过事务管理可以使任意Spring管理的对象AOP化。Spring提供了用标准Java语言编写的AOP框架,它的大部分内容都是基于AOP联盟的API开发的。它使应用程序抛开EJB的复杂性,但拥有传统EJB的关键功能。

4)DAO模块

DAO是 Data Access Object的缩写,DAO模式思想是将业务逻辑代码与数据库交互代码分离,降低两者耦合。通过DAO模式可以使结构变得更为清晰,代码更为简洁。DAO模块提供了JDBC的抽象层,简化了数据库厂商的异常错误(不再从SQLException继承大批代码),大幅度减少代码的编写,并且提供了对声明式事务和编程式事务的支持。

5)ORM映射模块

Spring ORM 模块提供了对现有ORM框架的支持,各种流行的ORM框架已经做得非常成熟,并且拥有大规模的市场,Spring没有必要开发新的ORM工具,它对Hibernate提供了完美的整合功能,同时也支持其他ORM工具。注意这里Spring是提供各类的接口(support),目前比较流行的下层数据库封闭映射框架,如 ibatis, Hibernate等。

6)Web模块

此模块建立在Spring Context 基础之上,它提供了Servlet监听器的Context 和 Web应用的上下文。对现有的Web框架,如JSF、Tapestry、Structs等,提供了集成。Structs是建立在MVC 这种公认的好的模式上的,Struts在M、V和C上都有涉及,但它主要是提供一个好的控制器和一套定制的标签库上,也就是说它的着力点在C和V上,因此,它天生就有MVC所带来的一系列优点,如:结构层次分明,高可重用性,增加了程序的健壮性和可伸缩性,便于开发与设计分工,提供集中统一的权限控制、校验、国际化、日志等等。

7)MVC模块

Spring WebMVC模块建立在Spring核心功能之上,这使它能拥有Spring框架的所有特性,能够适应多种多视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑的清晰分离。说说MVC在JSP的作用,如图所示。

1.2 环境搭建;

因为Spring 源码是通过GitHub管理的,所以我们首先的安装GitHub;

 1.2.1 安装GitHub

  无脑next;

 1.2.2 安装 gradle 

  跟maven一样,安装完之后用 gradle -version

1.2.3 下载Spring

  我下载的是Spring4.0.0 ;

gradle cleanIdsa git://github.com/SpringSource/spring-framework.git

  坐等结束

下载下来的源码是不能直接导入到Eclipse 中的,我们还需要将源码转换为Eclipse可以读取的形式;其中网上大多都是一次性编译,导入,但是本人不推举使用,因为一旦出错,还得重新编译,耗费的时间相当大,本人使用的是编译我们自己感兴趣的工程,  打开命令窗口,切换到相应的目录下执行  gradle cleanidea eclipse

经过一段 时间的等待,这是我们再查看目录,就能发现我们熟悉的 Eclipse工程必须的 .project文件了,

这时可以打开Eclipse 直接导入工程

  

最新文章

  1. Webform:Application、ViewState对象的用法
  2. RDF和Jena RDF API简介
  3. Json的语法及使用方法
  4. Python一点注意
  5. 学习笔记——Maven实战(六)Gradle,构建工具的未来?
  6. 用PHP做服务器接口客户端用http协议POST访问安全性一般怎么做
  7. 【块状树】BZOJ 1086: [SCOI2005]王室联邦
  8. DOCKER,需要进入生产实践
  9. PLSQL实例(游标)
  10. POJ 2948 DP
  11. arcengine 实现调用arctoolbox中的dissolove
  12. 【linux系统学习】计算机硬件核心知识
  13. MongoDB学习笔记(一)
  14. BZOJ:4825: [Hnoi2017]单旋
  15. Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。
  16. RSA算法原理——(2)RSA简介及基础数论知识
  17. 1. Packet sniffers (包嗅探器 14个)
  18. 中国历史人物传记数据库 CBDB 若干表简介
  19. 浅谈HTTP和HTTPS的区别
  20. 开源ERP系统Odoo搭建文档

热门文章

  1. JS的第一节课
  2. Linux 命令 - w: 显示登录的用户及其当前执行的任务
  3. Django学习--9 Admin
  4. Ubuntu 15.04 中结束进程的命令
  5. sqlserver 关于快照
  6. WCF学习笔记 -- 基本概念
  7. 使用AngularJS构建大型Web应用
  8. bzoj 1040 骑士
  9. Poj 2586 / OpenJudge 2586 Y2K Accounting Bug
  10. [转]C#发送Email邮件 (实例:QQ邮箱和Gmail邮箱)