Spring框架的主要功能
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:
核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。
Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。
Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。
spring
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
" 目的:解决企业应用开发的复杂性
" 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能
" 范围:任何Java应用
简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
■ 轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
■ 控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
■ 面向切面——Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。
■ 容器——Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。
■ 框架——Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。
Spring简介
关于Spring Framework,今年夏天你可能已经听见很多的议论。在本文中,我将试图解释Spring能完成什么,和我怎么会认为它能帮助你开发J2EE应用程序。
我相信Spring是独特的,因为若干个原因:
. 它定位的领域是许多其他流行的framework没有的。Spring关注提供一种方法管理你的业务对象。
. Spring是全面的和模块化的。Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的。因此从你的学习中,你可得到最大的价值。例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象。
. 它的设计从底部帮助你编写易于测试的代码。Spring是用于测试驱动工程的理想的framework。
Spring对你的工程来说,它不需要一个以上的framework。Spring是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他framework没有考虑到的内容。
尽管它仅仅是一个从2003年2月才开始的开源工程,但Spring有较长的历史根基。这个开源工程是起源自我在2002年后期出版的《Expert One-on-One J2EE设计与开发》书中的基础代码。这本书展示了Spring背后的基础架构。然而,这个基础架构的概念要追溯到2000年的早些时候,并且反映了我为一系列成功的商业工程开发基础结构的经验。
从2003年1月,Spring已经落户于SourceForge上。现在有10个开发人员,其中6是高度投入的积极分子。
Spring的架构性的好处
在我们进入细节以前,让我们看一下Spring可以给一个工程带来的一些好处:
. Spring能有效地组织你的中间层对象,无论你是否选择使用了EJB。如果你仅仅使用了Struts或其他的包含了J2EE特有APIs的framework,你会发现Spring关注了遗留下的问题,。
. Spring能消除在许多工程上对Singleton的过多使用。根据我的经验,这是一个主要的问题,它减少了系统的可测试性和面向对象特性。
. Spring能消除使用各种各样格式的属性定制文件的需要,在整个应用和工程中,可通过一种一致的方法来进行配置。曾经感到迷惑,一个特定类要查找迷幻般的属性关键字或系统属性,为此不得不读Javadoc乃至源编码吗?有了Spring,你可很简单地看到类的JavaBean属性。倒置控制的使用(在下面讨论)帮助完成这种简化。
. Spring能通过接口而不是类促进好的编程习惯,减少编程代价到几乎为零。
. Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring应用中的大多数业务对象没有依赖于Spring。
. 使用Spring构建的应用程序易于单元测试。
. Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能选择用POJOs或local EJBs来实现业务接口,却不会影响调用代码。
. Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物,它们适于许多web应用。例如,Spring能使用AOP提供声明性事务而不通过使用EJB容器,如果你仅仅需要与单个的数据库打交道,甚至不需要JTA实现。
. Spring为数据存取提供了一致的框架,不论是使用JDBC或O/R mapping产品(如Hibernate)。
Spring确实使你能通过最简单可行的解决办法解决你的问题。这些特性是有很大价值的。
Spring能做什么?
Spring提供许多功能,在此我将快速地依次展示其各个主要方面。
任务描述:
首先,让我们明确Spring范围。尽管Spring覆盖了许多方面,但我们已经有清楚的概念,它什么应该涉及和什么不应该涉及。
Spring的主要目的是使J2EE易用和促进好编程习惯。
Spring不重新开发已有的东西。因此,在Spring中你将发现没有日志记录的包,没有连接池,没有分布事务调度。这些均有开源项目提供(例如Commons Logging 用来做所有的日志输出,或Commons DBCP用来作数据连接池),或由你的应用程序服务器提供。因为同样的的原因,我们没有提供O/R mapping层,对此,已有有好的解决办法如Hibernate和JDO。
Spring的目标是使已存在的技术更加易用。例如,尽管我们没有底层事务协调处理,但我们提供了一个抽象层覆盖了JTA或任何其他的事务策略。
Spring没有直接和其他的开源项目竞争,除非我们感到我们能提供新的一些东西。例如,象许多开发人员,我们从来没有为Struts高兴过,并且感到在MVC web framework中还有改进的余地。在某些领域,例如轻量级的IoC容器和AOP框架,Spring有直接的竞争,但是在这些领域还没有已经较为流行的解决方案。(Spring在这些区域是开路先锋。)
Spring也得益于内在的一致性。
所有的开发者都在唱同样的的赞歌,基础想法依然是Expert One-on-One J2EE设计与开发的那些。
并且我们已经能够使用一些主要的概念,例如倒置控制,来处理多个领域。
Spring在应用服务器之间是可移植的。
当然保证可移植性总是一次挑战,但是我们避免任何特定平台或非标准化,并且支持在WebLogic,Tomcat,Resin,JBoss,WebSphere和其他的应用服务器上的用户。
spring优点::
其实用spring最好的地方就是实现代码的复用。
首先spring的设计原则是非侵入性的,就是实际业务逻辑代码中感觉不到spring框架的存在,spring只是在其中起到一个实例产生的作用,然后把实例分配给需要的对象。这种设计的好事就是可以随时随地的把某个业务逻辑很轻松的从整个系统中抽离出来再在无任何修改的情况下用到其他系统中去。
然后就是切面的编程,这种设计是灵活的操作织入,例如你的某个业务逻辑是执行存款,存款这个业务之前之后都应该有某些附加操作,例如用户登录,检查余额,记录存款日志信息,但是这些不能够放在存款主业务当中,这个时候就可以用面向切面的方式灵活织入到存款业务中,但是这个过程有不需要改变原存款业务代码和逻辑实现。如果将来某个时候这些副业务刚改,例如我不想记录存款日志信息,但是我又要加入打印出存款细节的附加操作,这个时候只要把记录日志剥离出来,再植入打印功能。同样不需要更改源代码。
spring这些设计的终极目标就是避免同样或者相似功能在不同系统中的重复开发而设计的。
1: 轻量级的框架
2:非侵入性的
3:可以整合其他的框架,比如Struts, Hibernate等,使一个全方位的应用程序框架
4: 可以提供事务管理
5:实现松偶合(beanfactory)
6:扩展方便
7:托管BEAN AOP
----
1,降低开发成本.
2,方便使用.
3,整和个类框架.
4,易于选择
5,方便测试
6,统一配置.
7,灵活扩展.
8,非侵入性...
spring缺点:
但如果从以下方面观察,结合项目实际经验,个人感觉这些技术的应用大大降低了应用程序的可维护性,尤其是面对一个陌生的系统,或者项目人员变动频繁的时候。
1. 中断了应用程序的逻辑,使代码变得不完整,不直观。此时单从Source无法完全把握应用的所有行为。
2. 将原本应该代码化的逻辑配置化,增加了出错的机会以及额外的负担。
3. 时光倒退,失去了IDE的支持。在目前IDE功能日益强大的时代,以往代码重构等让人头痛的举动越来越容易。而且IDE还提供了诸多强大的辅助功能,使得编程的门槛降低很多。通常来说,维护代码要比维护配置文件,或者配置文件+代码的混合体要容易的多。
4. 调试阶段不直观,后期的bug对应阶段,不容易判断问题所在。
分享到:
相关推荐
提供Spring框架的基本功能,其主要组件是BeanFactory,是工厂模式的实现。 Spring 上下文。向Spring 框架提供上下文信息,包括企业服务,如 JNDI、EJB、电子邮件、国际化、校验和调度等。 Spring AOP。通过配置管理...
Core Container是Spring框架的基础,主要包括Bean Factory和ApplicationContext。Bean Factory负责对象的创建、管理与装配,而ApplicationContext则在Bean Factory的基础上增加了更多企业级服务,如消息源、国际化、...
在Spring框架中,注入方式主要有三种: 1. **构造器注入**:通过构造器传递依赖对象,使得对象在创建时就具备了所有必要的依赖。这种方式强制每个构造器都有一个唯一的参数列表,有助于防止误配置。 2. **setter...
### Spring框架参考手册知识点概述 #### 一、Spring框架概览 - **1.1 开始使用Spring** - Spring框架作为一个广泛使用的轻量级Java应用框架,为开发者提供了全面的解决方案,帮助他们构建高性能、可扩展的企业级...
Spring框架是Java企业级应用开发的重要工具,它的主要优点在于模块化设计,能够灵活地支持各种应用需求。在IoC容器部分,你会了解到如何通过配置文件或注解来管理对象及其依赖关系,实现松耦合,提高代码的可测试性...
新特性和增强功能在Spring框架3.0 2.1。 Java 5 2.2。 改进文档 2.3。 新的文章和教程 2.4。 新模块的组织和构建系统 2.5。 概述的新特性 2 5 1。 核心api更新Java 5 2 5 2。 弹簧表达式语言 2 5 3。 这个控制反转...
Spring框架由多个模块组成,主要包括: - **Core Container(核心容器)**:这是Spring的基础,包括Bean工厂(BeanFactory)和ApplicationContext,负责管理对象的生命周期和依赖关系。 - **Data Access/...
Spring框架是中国Java开发领域中的一个核心支柱,它以其强大的功能和灵活性深受开发者喜爱。这个压缩包包含的是Spring框架的核心JAR文件,对于任何Java开发者,尤其是那些致力于企业级应用开发的人来说,这些都是必...
通过查阅此文档,开发者可以深入理解Spring框架的工作原理,学习如何有效地使用其各种功能,并解决实际开发中遇到的问题。 总的来说,Spring框架帮助文档是一个宝贵的资源,对于想要提升Spring框架技能的开发者来说...
Spring Boot是基于Spring框架的快速开发工具,它简化了Spring应用的初始搭建以及配置过程,通过内置的Tomcat服务器和自动配置功能,让开发者能够更快地启动和运行应用。 十、Spring Cloud Spring Cloud是建立在...
Spring框架基础 Spring框架起源于Rod Johnson在2002年出版的《Expert One-on-One J2EE Design and Development》中的代码。这个框架融合了Java企业版(JEE)开发的最佳实践,与一流的第三方框架集成,并提供了简单...
1. **核心容器**:提供Spring框架的基本功能,其中BeanFactory是其主要组件,实现了工厂模式,负责管理bean的生命周期和依赖注入。 2. **Spring上下文**:为Spring框架提供上下文信息,是基于核心容器的抽象,提供...
本教程旨在深入讲解Spring框架的核心概念、主要功能以及如何在实际项目中应用。 一、Spring框架概述 Spring框架由Rod Johnson创建,它简化了Java企业级应用程序的开发。通过提供一种管理对象生命周期和装配方式,...
Spring框架包含以下主要模块: - **Core Container**:包括Core、Beans、Context和Expression Language模块,提供DI、Bean管理以及应用上下文。 - **Data Access/Integration**:包含JDBC、ORM、OXM、JMS和...
本笔记将深入探讨Spring框架的核心概念和主要功能,帮助你全面理解并掌握这一强大的工具。 一、Spring概述 Spring是一个开源的Java平台,它提供了一个全面的编程和配置模型,用于现代Java应用。其核心是IoC容器,...
本文将深入探讨Spring框架的核心概念、主要模块以及如何在实际项目中应用。 一、Spring框架核心概念 1. **依赖注入(Dependency Injection,DI)**:Spring通过DI来管理对象之间的依赖关系,使得代码更加松耦合,...
在描述中提到的"spring框架jar包"是Spring框架的核心组成部分,这些jar包包含了Spring框架的所有类和接口,使得开发者能够在项目中引入并使用Spring的功能。在开发过程中,程序员通常会根据需求选择引入特定的Spring...
核心包是Spring框架的基础,包含了实现IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)的主要组件。以下是对这些关键组件和相关文件的详细解释: 1. **spring-context-...