前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring Framework简介

Spring Framework简介

作者头像
jack.yang
发布于 2025-04-05 07:35:30
发布于 2025-04-05 07:35:30
510
举报

作者关于此主题早期文章

Spring框架快速入门

起源

要谈Spring的历史,就要先谈J2EE。J2EE应用程序的广泛实现是在1999年和2000年开始的,它的出现带来了诸如事务管理之类的核心中间层概念的标准化,但是在实践中并没有获得绝对的成功,因为开发效率,开发难度和实际的性能都令人失望。

曾经使用过EJB开发J2EE应用的人,一定知道,在EJB开始的学习和应用非常的艰苦,很多东西都不能一下子就很容易的理解。EJB要严格地实现各种不同类型的接口,类似的或者重复的代码大量存在。而配置也是复杂和单调,同样使用JNDI进行对象查找的代码也是单调而枯燥。虽然有一些开发工作随着xdoclet的出现,而有所缓解,但是学习EJB的高昂代价,和极低的开发效率,极高的资源消耗,都造成了EJB的使用困难。而Spring出现的初衷就是为了解决类似的这些问题。

Spring的一个最大的目的就是使J2EE开发更加容易。同时,Spring之所以与Struts、Hibernate等单层框架不同,是因为Spring致力于提供一个以统一的、高效的方式构造整个应用,并且可以将单层框架以最佳的组合揉和在一起建立一个连贯的体系。可以说Spring是一个提供了更完善开发环境的一个框架,可以为POJO(Plain Old Java Object)对象提供企业级的服务。

Spring的形成,最初来自Rod Jahnson所著的一本很有影响力的书籍《Expert One-on-One J2EE Design and Development》,就是在这本书中第一次出现了Spring的一些核心思想,该书出版于2002年。另外一本书《Expert One-on-One J2EE Development without EJB》,更进一步阐述了在不使用EJB开发J2EE企业级应用的一些设计思想和具体的做法。有时间了可以详细的研读一下。

简介

Spring Framework是一个轻量级的解决方案,也是构建企业级应用程序的潜在一站式解决方案。但是,Spring 是模块化的,开发者可以在项目中只使用其中自己需要的部分,例如,可以在任何 web 框架上使用控制反转(IoC),也可以只使用 Hibernate 集成代码或 JDBC 抽象层。它支持声明式事务管理、通过 RMI 或 web 服务实现远程访问,并可以使用多种方式持久化数据。它提供了功能全面的 MVC 框架 ,也可以透明地集成 AOP 到软件中。

Spring目标

Spring Framework是一个Java平台,为开发Java应用程序提供全面的基础架构支持。Spring处理基础架构,因此您可以专注于您的应用程序。

Spring被设计为非侵入式的,这意味着您的域逻辑代码通常不依赖于框架本身。在集成层(例如数据访问层)中,将存在对数据访问技术和Spring库的一些依赖性。但是,应该很容易将这些依赖项与其余代码库隔离开来。

Spring允许您从“普通旧Java对象”(POJO)构建应用程序,并以非侵入方式将企业服务应用于POJO。此功能适用于Java SE编程模型以及完整和部分Java EE。

作为应用程序开发人员,您可以从Spring平台中受益的示例如下:

  • 使Java方法在数据库事务中执行,而不必处理事务API
  • 使本地Java方法成为HTTP端点,而无需处理Servlet API。
  • 使本地Java方法成为消息处理程序,而无需处理JMS API。
  • 使本地Java方法成为管理操作,而无需处理JMX API。

依赖注入和控制反转

Java应用程序 - 指从受限制的嵌入式应用程序到n层服务器端企业应用程序 - 通常由协作形成应用程序的对象组成。因此,应用程序中的对象彼此依赖。

尽管Java平台提供了丰富的应用程序开发功能,但它缺乏将基本构建块组织成一个连贯整体的方法,将该任务留给架构师和开发人员。虽然您可以使用诸如Factory,Abstract Factory,Builder,Decorator和Service Locator 之类的设计模式来构成应用程序的各种类和对象实例,但这些模式只是:给出名称的最佳实践,描述为模式的作用,应用位置,解决的问题等等。模式是必须在应用程序中实现的正式最佳实践。

Spring框架控制反转(IoC)组件通过提供一种将不同组件组合成一个可以使用的完全工作的应用程序的形式化方法来解决这一问题。Spring Framework将形式化的设计模式编码为可以集成到您自己的应用程序中的对象。国外已经有许多组织和机构以这种方式使用Spring Framework来设计健壮,可维护的应用程序。

背景

“ 问题是,控制的哪些方面是[他们]反转? ”Martin Fowler 在2004年在他的网站上提出了关于控制反转(IoC)的 问题 .Fowler建议重新命名原则,使其更加不言自明,并提出依赖注入。

框架模块

Spring Framework由19个模块组成的功能组成。可分为 Data Access/Integration、Web、AOP and Instrumentation、 Core Container以及Test 这5组,如下图所示:等,如下图所示

1.1 Core Container - 核心容器

Spring Core Container 包含 spring-core, spring-beans, spring-context, spring-context-support, 以及 spring-expression (Spring Expression Language,Spring 表达式语言,SpEL)模块。

它们之间的完整依赖关系

其中,core 和 beans 模块提供了 Spring 框架的基础功能,包括控制反转(IoC)和依赖注入。BeanFactory 是工厂模式的一种复杂而精致的实现,它使开发者不再需要使用编码式单例(programmatic singletons),并可将配置和依赖从实际编码逻辑中解耦。 context 模块使得由 Core 和 Beans 提供的基础功能真正构建成坚实的基础:这意味着Spring 工程能以框架模式访问对象,类似于JNDI注册表。Context 模块继承了Beans 模块的特性并增加了对国际化(例如资源绑定)、事件传播、资源加载和context 透明化(例如 Servlet container)。同时,也支持JAVA EE 特性,例如 EJB、 JMX 和 基本的远程访问。Context 模块的关键是 ApplicationContext 接口。

下图是Spring工作原理的高级视图。您的应用程序类与配置元数据相结合,以便在ApplicationContext创建和初始化之后,您拥有完全配置且可执行的系统或应用程序。

图1. Spring IoC容器

1.2 Data Access/Integration - 数据访问与集成

数据访问与集成层包含 JDBC、ORM、OXM、JMS和TX模块。

它们之间的完整依赖关系

数据访问与集成层包含 JDBC、ORM、OXM、JMS和事务模块。 spring-jdbc 模块提供了 JDBC抽象层,它消除了冗长的 JDBC 编码和对数据库供应商特定错误代码的解析。 spring-tx 模块支持编程式事务和声明式事务,可用于实现了特定接口的类和所有的 POJO 对象。编程式事务需要自己写beginTransaction()、commit()、rollback()等事务管理方法,声明式事务是通过注解或配置由 spring 自动处理,编程式事务粒度更细。 spring-orm 模块提供了对流行的对象关系映射 API的集成,包括 JPA、JDO 和 Hibernate 等。通过此模块可以让这些 ORM 框架和 spring 的其它功能整。 spring-oxm 模块提供了对 OXM 实现的支持,比如JAXB、XML Beans等。 spring-jms 模块包含生产(produce)和消费(consume)消息的功能

1.3 AOP

aop 模块提供了面向切面编程(AOP)的实现,可以定义诸如方法拦截器和切入点等,从而使实现功能的代码彻底的解耦。aspects 模块提供了对 AspectJ 的集成。

1.4 Instrumentation

instrument 模块提供了对检测类的支持和用于特定的应用服务器的类加载器的实现。

1.5 Web

Web 层包括 spring-web、spring-webmvc、spring-webmvc-portlet 等模块。

它们之间的完整依赖关系

spring-web 模块提供面向 web 的基本功能和面向 web 的应用上下文,比如 multipart 文件上传功能、使用 Servlet 监听器初始化 IoC 容器等。它还包括 HTTP 客户端以及 Spring 远程调用中与 web 相关的部分。 spring-webmvc 模块(即 Web-Servlet 模块)为 web 应用提供了模型视图控制(MVC)和 REST Web 服务的实现。Spring 的 MVC 框架可以使领域模型代码和 web 表单完全地分离,且可以与 Spring 框架的其它所有功能进行集成。 spring-webmvc-portlet 模块(即Web-Portlet模块)提供了用于 Portlet 环境的 MVC 实现,并反映了 pring-webmvc 模块的功能。

spring-test

模块通过 JUnit 和 TestNG 组件支持单元测试集成测试。它提供了一致性地加载和缓存 Spring 上下文,也提供了用于单独测试代码的模拟对象(mock object)。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring框架快速入门
Spring Framework是一个轻量级的解决方案,也是构建企业级应用程序的潜在一站式解决方案。但是,Spring是模块化的,允许您只使用您需要的部件,而无需引入其余部分。您可以使用IoC容器,顶部有任何Web框架,但您也可以只使用 Hibernate集成代码或JDBC抽象层。Spring Framework支持声明式事务管理,通过RMI或Web服务远程访问您的逻辑,以及用于持久保存数据的各种选项。它提供了全功能的MVC框架,使您能够将AOP透明地集成到您的软件中。
jack.yang
2025/04/05
910
Spring框架入门(一):概念简介
Spring 是一个开源的轻量级 Java SE( Java 标准版本)/Java EE( Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。Spring容器通过反转控制( IoC )和依赖注入( DI )来实现高内聚、低耦合的应用。除此之外它可以整合很多第三方框架,它还提供面向切面编程( AOP )的能力,对通用任务如安全、事务、日志等进行集中式管理
sr
2019/05/23
1K0
Java匹马行天下之J2EE框架开发——Spring—>Spring框架知多少
————也许我注定成不了一个伟大的人,但是至少我可以做一个很棒的自己。我想我现在应该做的不是瞻前顾后,而是活在当下,正确认知自己,做好自己现在的工作,努力提升自己的能力,踏踏实实地做一个程序员
泰斗贤若如
2019/06/19
9820
Java匹马行天下之J2EE框架开发——Spring—>Spring框架知多少
Spring MVC系列-(1) Spring概述
本章主要介绍Spring中的体系结构和常见概念,比如bean、控制反转(Inverse of Control,IoC)等。
码老思
2023/10/19
2090
Spring MVC系列-(1) Spring概述
spring框架复习大纲【面试+提高】
spring框架复习大纲【面试+提高】 简介 创立于 2003年 , 是为了解决企业级开发的复杂性的! 是一个分层的se/ee(javase和java ee)一站式轻量级开源框架 体系结构 Sp
Java帮帮
2018/03/22
1.3K0
spring框架复习大纲【面试+提高】
Spring系列之初识Spring Spring概述
Spring当然不是上面那个Spring,Spring之所以命名为Spring是因为这个开源的轻量级的开源框架的出现给软件行业带来了春天,促进了软件行业的发展 Spring的理念:整合现有的框架技术,使技术更加实用,是一个大杂烩
一只胡说八道的猴子
2020/09/27
7190
Spring系列之初识Spring Spring概述
Spring框架体系简介(JAVA)
  Spring是一种轻量级的控制反转和面向切面的容器框架。   Spring 3.0框架是一个分层架构,由20多个模块组成,这些模块被分成了5个部分,分别为数据访问/集成、Web、AOP、核心容器和测试5个部分。
程序员云帆哥
2022/05/12
4640
Spring框架体系简介(JAVA)
spring框架快速复习
我们都知道Spring就是java的轻量级bean管理框架,spring的核心是控制反转(IOC)与面向切面(AOP)
Tim在路上
2020/08/04
5290
spring框架快速复习
【Spring】开发框架Spring核心技术含Resource接口详细讲解
Spring是一个分层的Java SE/EE应用一站式的轻量级开源框架。Spring核心是IOC和AOP。 Spring主要优点包括:
洁洁
2023/10/10
5160
【Spring】开发框架Spring核心技术含Resource接口详细讲解
Spring简介
Rod Johson在2002年编著的《Expert one to one J2EE design and development》一书中,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破Java EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。同年他又推出了一部堪称经典的力作《Expert one-to-one J2EE Development without EJB》,该书在Java世界掀起了轩然大波,不断改变着Java开发者程序设计和开发的思考方式。在该书中,作者根据自己多年丰富的实践经验,对EJB的各种笨重臃肿的结构进行了逐一的分析和否定,并分别以简洁实用的方式替换之。 传统J2EE应用的开发效率低,应用服务器厂商对各种技术的支持并没有真正统一,导致J2EE的应用没有真正实现Write Once及Run Anywhere的承诺。Spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务等。 Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。 spring是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 二、什么是spring 轻量级的IOC和AOP容器框架 1、轻量级:相对于重量级的EJB,JavaBean代替EJB;从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 轻量级体现容器依赖 代码污染程度 2、IOC(控制反转):Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。 3.AOP(面向方面编程):Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。 AOP将系统分为核心业务逻辑和通用逻辑(事务、日志、安全、异常等) 4.容器:Spring包含并管理应用对象的配置和生命周期(容器定义),在这个意义上它是一种容器,你可以配置你的每个bean如何被创建。 Sping 存放了有spring管理的所有业务逻辑对象 5.框架:Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。 三、为什么需要spring 你可能正在想“Spring不过是另外一个的framework”。当已经有许多开放源代码(和专有) J2EE framework时,我们为什么还需要Spring Framework? 对你的工程来说, Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。 Spring的主要目的是使J2EE易用。 Spring不重新开发已有的东西。因此,在Spring中你将发现没有日志记录的包,没有连接池,没有分布事务调度。这些均有开源项目提供(例如 Commons Logging 用来做所有的日志输出,或Commons DBCP用来作数据连接池),或由你的应用程序服务器提供。因为同样的的原因,我们没有提供O/R mapping层,对此,已有有好的解决办法如Hibernate和JDO。 Spring没有直接和其他的开源项目竞争,除非我们感到我们能提供新的一些东西。例如,象许多开发人员,我们从来没有为Struts高兴过,并且感到在MVC web framework中还有改进的余地。在某些领域
西门呀在吹雪
2020/11/09
5110
Spring 的整体架构
上图是 Spring 的整体框架图,主要分为了几大块: Core Container、Data Access/Integration、Web、AOP 和 Test。下面我们一一讲解这几个模块,至于其它的Aspects、Instrumentation和Messaging,本文就不多做赘述。
飞翔的竹蜻蜓
2020/07/07
6130
16.Spring前世今生与Spring编程思想
1、通过对本章内容的学习,可以掌握Spring的基本架构及各子模块之间的依赖关系。
编程之心
2020/08/12
5130
Spring 学习笔记(1) Spring 核心功能和概念
首先来介绍一下 Spring , 打开 Spring 官网我们可以看到 Spring 有众多框架,比如 SpringMVC、 SpringBoot、 Spring Cloud 等等,它是这些框架的集合,而 Spring Framework 是 Spring 里面的一个开源框架,并且 Spring 框架是其它框架的核心和基础。
归思君
2023/10/16
3740
Spring 学习笔记(1) Spring 核心功能和概念
Spring学习笔记1_Spring的概述
本章目录 Spring学习笔记1_Spring的概述 1.Spring介绍 2.Spring作用 3.Spring起源 4.Spring体系结构 5.Spring的有点 1.Spring 介绍 Spring 是一个开源框架,Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 创建。简单来说,Spring 是一个分层的 JavaSE/EEfull-stack(一站式) 轻量级开源框架。 2.Spring 作用 Spring 致力于提供一种方法管理你的业务对
Java学习
2018/04/17
7220
Spring学习笔记1_Spring的概述
Spring概述「建议收藏」
Spring是一种多层的J2EE应用程序框架,其核心就是提供一种新的机制管理业务对象及其依赖关系。
全栈程序员站长
2022/08/04
5230
Spring概述「建议收藏」
Spring技术内幕:设计理念和整体架构概述
程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决。 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断总结,积累了很多经验。 相信大家都使用过Spring,有些人了解它的核心:IOC和AOP,但只是了解它们的基本概念、使用了反射和动态代理,关于如何管理对象、代理的具体实现了解的比较浅。 有些人使用Spring MVC,使用Spring集成数据库、事务、消息队列以简化操作,但对集成的具体设计思路和实现了解的也比较
二十三年蝉
2018/07/05
2K0
Spring模块组成(框架组成、整体架构、体系架构、体系结构)
Spring 总共大约有 20 个模块, 由 1300 多个不同的文件构成。 而这些组件被分别整合在核心容器(Core Container) 、 AOP(Aspect Oriented Programming)和设备支持(Instrmentation) 、数据访问与集成(Data Access/Integeration) 、 Web、 消息(Messaging) 、 Test等 6 个模块中。 以下是 Spring 5 的模块结构图:
Java_老男孩
2019/12/02
2.9K0
关于Spring面试题讲解1
Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。
Java学习
2018/07/25
6660
初识 Spring
  软件框架(software framework),通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。框架的功能类似于基础设施,与具体的软件应用无关,但是提供并实现最为基础的软件架构和体系。软件开发者通常依据特定的框架实现更为复杂的商业运用和业务逻辑。这样的软件应用可以在支持同一种框架的软件系统中运行。简而言之,框架就是制定一套规范或者规则(思想),程序员在该规范或者规则(思想)下工作。或者说使用别人搭好的舞台来做编剧和表演,也可以将框架理解为半成品软件。
Demo_Null
2020/09/28
4260
初识 Spring
Spring基础小结
Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。
WindCoder
2018/09/19
5870
Spring基础小结
相关推荐
Spring框架快速入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档