spring的历史和哲学
(1) 春天来了—— Spring 来了!
Spring 在起源可以回溯到 Rod Johnson 编写的“ Expert One-to-One J2EE Design and Development”一书 (Wrox , 2002) 。在这本书中, Rod 展示了他的 interface21 框架,他为自己的应用编写了这一框架。这一框架被发布到开源世界后,组成了现在我们所知的 Spring 框架的基础。
Spring 在早期的 beta 和发布备选版本阶段进行得很迅速,第一个正式版本 1.0 在 2004 年 3 月 24 日 发布。
官方: http://www.springframework.org
(2)What Is Spring(Spring 是什么 ) ?
或许解释清楚 Spring 技术到底是什么会很困难。通常, Spring 是指一个用于构造 JAVA 应用程序的轻量级框架,但这句话包含两个有趣的地方。首先,你可以采用 Spring 来构造任何程序,这一 Apache Struts这样的框架不同,你不限定于只编写 WEB 应用。其次,以上解释中的“轻量级”并不意味着类数量很少,或者发行包大小很小,实际上,它指的是 Spring 哲学原理的总称——那就是最少的侵入。 Spring 是轻量级的,意味着你只需对你的程序代码做很少改动 ( 假若有的话 ) ,而获得 Spring 核心带来的好处,你也可以在任何时候选择抛弃 Spring ,你会发现这实在很容易。注意,上面这句话只针对 Spring 核心本身——很多附加的 Spring 组件,比如数据访问,需要与 Spring 框架有相对紧密得多的耦合关系。但是,这些耦合带来的好处显而易见。
Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。
(3)Spring 的体系结构
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。 Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式
<1> 核心容器
核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory ,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开 ( 工厂方法 ) 。
<2>Spring 上下文
Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。 Spring 上下文包括企业服务,例如JNDI 、 EJB 、电子邮件、国际化、校验和调度功能。
<3>Spring AOP
通过配置管理特性, Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP 。 Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP ,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
<4>Spring DAO
JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。 Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
<5>Spring ORM
Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO 、 Hibernate 和 iBatis SQL Map 。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
<6>Spring Web 模块
Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以, Spring 框架支持与 Jakarta Struts 的集成。 Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
<7>Spring MVC 框架
MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口, MVC 框架变成为高度可配置的, MVC 容纳了大量视图技术,其中包括 JSP 、 Velocity 、 Tiles 、 iText 和 POI
spring的历史和哲学的更多相关文章
- Spring的历史及哲学
Spring的历史和哲学 1.Spring 历史 时间回到2002年,当时正是 Java EE 和 EJB 大行其道的时候,很多知名公司都是采用此技术方案进行项目开发.这时候有一个美国的小伙子认为 E ...
- srping的历史与哲学
历史: 要谈Spring的历史,就要先谈J2EE.J2EE应用程序的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功, ...
- spring的历史和设计科学
Spring的起源 要谈Spring的历史,就要先谈J2EE.J2EE应用程序的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得 ...
- hibernate 各历史版本下载 spring各历史版本下载
hibernate 各历史版本下载http://sourceforge.net/projects/hibernate/files/ spring各历史版本下载http://www.springsour ...
- spring历史和哲学
spring 历史: 2004年 Spring Framework 1.0 final 正式问世. 1.在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分 ...
- Spring history、design philosophy (Spring的历史及设计理念)
一,Spring的发展史 1,Spring1.x 时代 在Spring1.x时代,都是通过xml文件配置bean,随着项目的不断扩大,需要将xml配置分放到不同的配置文件中,需要频繁的在java类和x ...
- Spring Boot 历史
2012年10月,Mike Youngstrom在Spring jira中创建了一个功能需求,要求在Spring框架中支持无容器Web应用程序体系结构.他建议通过main方法引导的Spring容器内配 ...
- Spring系列(零) Spring Framework 文档中文翻译
Spring 框架文档(核心篇1和2) Version 5.1.3.RELEASE 最新的, 更新的笔记, 支持的版本和其他主题,独立的发布版本等, 是在Github Wiki 项目维护的. 总览 历 ...
- 第五章 征服数据库(Spring对DB的使用)——开发持久层
本章内容: 定义Spring对数据库访问的支持 配置数据库资源 使用Spring的JDBC模板 在几乎所有的企业级应用中,都需要构建数据持久层.现在意义上的数据持久层是指把对象或者数据保存到数据库中, ...
随机推荐
- angularjs简单介绍和特点
首先angular是一个mvc框架, 使用mvc解耦, 采用model, controller以及view的方式去组织代码, 会将一个html页面分成若干个模块, 每个模块都有自己的scope, se ...
- HashMap 和 Hashtable 的 6 个区别,一般人不知道最后一条
1.线程安全 Hashtable 是线程安全的,HashMap 不是线程安全的. 为什么说 HashTable 是线程安全的? 来看下 Hashtable 的源码,Hashtable 所有的元素操作都 ...
- go语言入门教程:基本语法—常量constant
一.常量的使用 1.1 常量声明 常量是一个简单值的标识符,在程序运行时,不会被修改的量. const identifier [type] = value 显式类型定义: const b string ...
- 接触node第一步
趁着工作不忙,今天来系统记录一下安装node环境: 1.node下载地址为:https://nodejs.org/en/,检查是否安装成功:如果输出版本号,说明我们安装node环境成功:node -v ...
- Docker+Teamcity+Maven+SVN搭建持续集成环境
这是使用Jenkins作为CI/CD工具,Teamcity的作用是相同的.
- Vue-Router路由 Vue-CLI脚手架和模块化开发 之 路由常用配置与路由嵌套
vue-router路由常用配置 1.mode:配置路由模式,默认为hash,由于URL很丑,可以修改为history,但是需要服务端的支持: 以上一篇的博文为实例: 初始时url的显示: 使用mod ...
- 【题解】Luogu P4436 [HNOI/AHOI2018]游戏
原题传送门 \(n^2\)过百万在HNOI/AHOI2018中真的成功了qwqwq 先将没门分格的地方连起来,枚举每一个块,看向左向右最多能走多远,最坏复杂度\(O(n^2)\),但出题人竟然没卡(建 ...
- 字符和字符串在Java中的旅程
以下是个人对java中字符和字符串的见解,如有疏漏之处,还请不吝赐教. 下面通过一个简单的程序来说明字符和字符串在Java中的旅程. 以字符 ' 中 '为例, 它的GBK编码是2个字节:0xd6d0, ...
- javaweb闲暇小程序之抽签程序
学自潭州学院视频 主程序页面截图 <%@ page language="java" contentType="text/html; charset=UTF-8&qu ...
- qt连接数据库Sqlite
#include <QCoreApplication> #include <QDebug> #include <QSqlDatabase> #include < ...