Spring 框架的架包分析、功能作用、优点,及jar架包简介

Spring 框架的架包详解    Spring的作用     Spring的优势

由于刚搭建完一个MVC框架,决定分享一下我搭建过程中学习到的一些东西。我觉得不管你是个初级程序员还是高级程序员抑或是软件架构师,在学习和了解一个框架的时候,首先都应该知道的是这个框架的原理和与其有关jar的作用、关系。这篇文章总结一下spring框架的相关知识。

一、spirng的简介高手可以跳过

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

二、spring的工作原理(MVC)

1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。

  2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 
  3.DispatcherServlet请请求提交到目标Controller 
  4.Controller进行业务逻辑处理后,会返回一个ModelAndView 
  5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象 
  6.视图对象负责渲染返回给客户端。

三、spring的作用

  AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP后,公共服务(比如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。

  IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反过来的JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straightconstruction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。 
  Spring即使一个AOP框架,也是一IOC容器。 Spring 最好的地方是它有助于您替换对象。有了Spring,只要用JavaBean属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。 
  Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean 的方式,如图 1 所示。 
  组成 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:JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。SpringDAO的面向 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架包目录说明

aspectj目录下是在Spring框架下使用aspectj的源代码和测试程序文件。

Aspectj是java最早的提供AOP的应用框架。 
     dist 目录下是Spring 的发布包,关于发布包下面会详细进行说明。 
     docs 目录下是相关的文档,包括有Spring api 的javadoc、reference 参考指南、Spring的标签库使用文 件及           Spring MVC 的MVC-step-by-step 讲解与示例。都是很好的文档,值得好好研究一下。

lib 目录下是Spring 所依赖的第三方开源包。

mock 目录下是Spring 辅助应用测试的Mock 源程序。 
     samples 目录下是Spring 的示例源程序及简单的webapp 示例框架的示例配置,值得好好学习的有jpetstore 及petclinic,当然其它的countries、imagedb、tiles-example 也可以好好参考一下。 
     src 目录下是Spring 的源程序。 
     test 目录下Spring 的单元测试源程序。 
     tiger 目录下是针对在Spring框架中使用java 1.5的源程序及测试程序。Tiger是jdk 1.5版本的开发代号。

五、spring架包工作作用详解

spring.jar 是包含有完整发布模块的单个jar 包。但是不包括mock.jar, aspects.jar, spring-portlet.jar, and              spring-hibernate2.jar。

spring-src.zip就是所有的源代码压缩包。 
     除了spring.jar 文件,Spring 还包括有其它21 个独立的jar 包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar 包,而不必引入整个spring.jar 的所有类文件。 
    spring-core.jar(必须) 
     这个jar 文件包含Spring 框架基本的核心工具类。Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。 
外部依赖Commons Logging, (Log4J)。 
spring-beans.jar(必须) 
这 个jar 文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean 以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI 支持,引入spring-core.jar 及spring-beans.jar 文件就可以了。 
外部依赖spring-core,(CGLIB)。

spring-aop.jar(必须) 
这个jar 文件包含在应用中使用Spring 的AOP 特性时所需的类和源码级元数据支持。使用基于AOP 的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。 
外部依赖spring-core, (spring-beans,AOP Alliance, CGLIB,Commons Attributes)。

spring-context.jar(必须) 
这个jar 文件为Spring 核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类。 
外部依赖spring-beans, (spring-aop)。

spring-dao.jar(必须) 
这个jar 文件包含Spring DAO、Spring Transaction 进行数据访问的所有类。为了使用声明型事务支持,还需在自己的应用里包含spring-aop.jar。 
外部依赖spring-core,(spring-aop, spring-context, JTA API)。

spring-jdbc.jar(必须) 
这个jar 文件包含对Spring 对JDBC 数据访问进行封装的所有类。 
外部依赖spring-beans,spring-dao。

spring-support.jar(必须) 
这个jar 文件包含支持UI模版(Velocity,FreeMarker,JasperReports),邮件服务,脚本服务(JRuby),缓存Cache(EHCache),任务计划Scheduling(uartz)方面的类。 
外部依赖spring-context, (spring-jdbc, Velocity, FreeMarker, JasperReports, BSH, Groovy, JRuby, Quartz, EHCache)

spring-web.jar(必须) 
这个jar 文件包含Web 应用开发时,用到Spring 框架时所需的核心类,包括自动载入Web Application Context 特性的类、Struts 与JSF 集成类、文件上传的支持类、Filter 类和大量工具辅助类。 
外部依赖spring-context, Servlet API, (JSP API, JSTL, Commons FileUpload, COS)。

spring-webmvc.jar 
这个jar 文件包含Spring MVC 框架相关的所有类。包括框架的Servlets,Web MVC框架,控制器和视图支持。当然,如果你的应用使用了独立的MVC 框架,则无需这个JAR 文件里的任何类。 
外部依赖spring-web, (spring-support,Tiles,iText,POI)。

spring-portlet.jar 
spring自己实现的一个类似Spring MVC的框架。包括一个MVC框架和控制器。 
外部依赖spring-web, Portlet API,(spring-webmvc)。

spring-struts.jar 
Struts框架支持,可以更方便更容易的集成Struts框架。 
外部依赖spring-web,Struts。

spring-remoting.jar 
这个jar 文件包含支持EJB、远程调用Remoting(RMI、Hessian、Burlap、Http Invoker、JAX-RPC)方面的类。 
外部依赖spring-aop, (spring-context,spring-web,Hessian,Burlap,JAX-RPC,EJB API)。

spring-jmx.jar 
这个jar包提供了对JMX 1.0/1.2的支持类。 
外部依赖spring-beans,spring-aop, JMX API。

spring-jms.jar 
这个jar包提供了对JMS 1.0.2/1.1的支持类。 
外部依赖spring-beans,spring-dao,JMS API。

spring-jca.jar 
对JCA 1.0的支持。 
外部依赖spring-beans,spring-dao, JCA API。

spring-jdo.jar 
对JDO 1.0/2.0的支持。 
外部依赖spring-jdbc, JDO API, (spring-web)。

spring-jpa.jar 
对JPA 1.0的支持。 
外部依赖spring-jdbc, JPA API, (spring-web)。

spring-hibernate2.jar 
对Hibernate 2.1的支持,已经不建议使用。 
外部依赖spring-jdbc,Hibernate2,(spring-web)。

spring-hibernate3.jar 
对Hibernate 3.0/3.1/3.2的支持。 
外部依赖spring-jdbc,Hibernate3,(spring-web)。

spring-toplink.jar 
对TopLink框架的支持。 
外部依赖spring-jdbc,TopLink。

spring-ibatis.jar 
对iBATIS SQL Maps的支持。 
外部依赖spring-jdbc,iBATIS SQL Maps。

另外的两个包。

spring-mock.jar 
这 个jar 文件包含Spring 一整套mock 类来辅助应用的测试。Spring 测试套件使用了其中大量mock 类,这样测试就更加简单。模拟HttpServletRequest 和HttpServletResponse 类在Web 应用单元测试是很方便的。并且提供了对JUnit的支持。 
外部依赖spring-core。

spring-aspects.jar 
提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中,比如Eclipse AJDT。 
外部依赖。

WEAVER JARS (dist/weavers)说明。

spring-agent.jar 
Spring的InstrumentationSavingAgent (为InstrumentationLoadTimeWeaver),一个设备代理包,可以参考JDK1.5的Instrumentation功能获得更多信息。 
外部依赖none (for use at JVM startup: "-javaagent:spring-agent.jar")。

spring-tomcat-weaver.jar 
扩展Tomcat的ClassLoader,使其可以使用instrumentation(设备)类。 
外部依赖none (for deployment into Tomcat‘s "server/lib" directory)。

转载:http://java-ahz.iteye.com/blog/1722976

spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了?spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。
除了spring.jar文件,Spring还包括有其它13个独立的jar包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar包,而不必引入整个spring.jar的所有类文件。
(1)?spring-core.jar
这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。

(2)spring-beans.jar
这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion?of?Control?/?Dependency?Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,引入spring-core.jar及spring-?beans.jar文件就可以了。
(3)spring-aop.jar
这个jar文件包含在应用中使用Spring的AOP特性时所需的类。使用基于AOP的Spring特性,如声明型事务管理(Declarative?Transaction?Management),也要在应用里包含这个jar包。
(4)spring-context.jar
这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring?ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如?Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。
(5)spring-dao.jar
这个jar文件包含Spring?DAO、Spring?Transaction进行数据访问的所有类。为了使用声明型事务支持,还需在自己的应用里包含spring-aop.jar。
(6)spring-hibernate.jar
这个jar文件包含Spring对Hibernate?2及Hibernate?3进行封装的所有类。
(7)spring-jdbc.jar
这个jar文件包含对Spring对JDBC数据访问进行封装的所有类。
(8)spring-orm.jar
这个jar文件包含Spring对DAO特性集进行了扩展,使其支持?iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。这个jar文件里大部分的类都要依赖?spring-dao.jar里的类,用这个包时你需要同时包含spring-dao.jar包。
(9)spring-remoting.jar
这个jar文件包含支持EJB、JMS、远程调用Remoting(RMI、Hessian、Burlap、Http?Invoker、JAX-RPC)方面的类。

10)spring-support.jar

(11)spring-web.jar
这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。
(12)spring-webmvc.jar
这个jar文件包含Spring?MVC框架相关的所有类。包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、?XSLT相关类。当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类。
(13)spring-mock.jar
这个jar文件包含Spring一整套mock类来辅助应用的测试。Spring测试套件使用了其中大量mock类,这样测试就更加简单。模拟HttpServletRequest和HttpServletResponse类在Web应用单元测试是很方便的。
如何选择这些发布包,决定选用哪些发布包其实相当简单。如果你正在构建Web应用并将全程使用Spring,那么最好就使用单个全部的?spring.jar文件;如果你的应用仅仅用到简单的Inversion?of?Control?/?Dependency?Injection(IoC/DI)容器,那么只需spring-core.jar与spring-beans.jar即可;如果你对发布的大小要求很高,那么就得精挑细选了,只取包含自己所需特性的jar文件了。采用独立的发布包你可以避免包含自己的应用不需要的全部类。当然你可以采用其它的一些工具来设法令整个应用包变小,节省空间的重点在于准确地找出自己所需的Spring依赖类,然后合并所需的类与包就可以了。Eclispe有个插件叫?ClassPath?Helper可以帮你找找所依赖的类。

转载:http://blog.csdn.net/nszkadrgg/article/details/11840653

时间: 2024-10-23 09:43:09

Spring 框架的架包分析、功能作用、优点,及jar架包简介的相关文章

spring 框架自带的定时器功能

1...pom.xml 文件配置 1 <dependencies> 2 <dependency> 3 <groupId>junit</groupId> 4 <artifactId>junit</artifactId> 5 <version>4.11</version> 6 <scope>test</scope> 7 </dependency> 8 <dependency

25个经典的Spring面试问答,什么是Spring框架?

1.什么是Spring框架?Spring框架有哪些主要模块?深夜在来一波,晚安 Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台.Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发.Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安心的集成Spring框架,不必担心Spring是如何在后台进行工作的. Spring框架至今已集成了20多个模块.这些模块主要被分如下图所示的核心容器.数据访问/集成,.

一篇文章带你了解spring框架

虽然现在流行用SpringBoot了,很多配置已经简化和封装了,但是对于Spring的一些基础我们了解一些是对我们自己的架构思想很有帮助的!接下来和笔者一起来探讨一下Spring框架吧! 1.什么是Spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台.Spring帮助开发者解决了开发中基础性的问题,使得开发人员可以专注于应用程序的开发.Spring框架本身亦是按照设计模式精心打造,这使得我们可以在开发环境中安

【Java】关于Spring框架的总结 (一)

本文总结一些关于Spring框架的理解,注意点及基础操作.如果有不对的地方,欢迎批评和建议.大家一起努力吧! Spring 框架简介 Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架.Spring 致力于 Java EE 应用的各种解决方案,而不是仅仅专注于某一层的方案,可以说, Spring 是企业应用开发的"一站式"选择,Spring 贯穿表现层.

Spring框架及AOP

Spring核心概念 Spring框架大约由20个功能模块组成,这些模块主分为六个部分: Core Container :基础部分,提供了IoC特性. Data Access/Integration Web AOP(Aspect Orient Programming) Instrumentation Test Spring两大核心技术 控制反转(Inversion of Control IoC) 称之为”依赖注入”,是面向对象编程中的一个设计理念,用来降低程序代码之间的耦合度. 将组建对象的控制

Spring 框架常用语法进行总结

Spring 框架常用语法进行总结: spring框架的二大主要的功能就是IOC和AOP. IOC: 控制反转(依赖注入) AOP: 面向切面编程 学习spring最好的方法就是去看官网,里面有详细的说明及使用原则 介绍spring 中的注解的使用,xml配置等目前在市面上面较少. 首先介绍Java自带的元注解 (元注解就是 能注解到注解上的注解,能用在其他注解上的注解 ) Java5.0定义了4个标准的meta-annotation类型 @Target : 用于描述注解的范围,即注解在哪用.它

[转] - JAR文件包及jar命令详解 ( MANIFEST.MF的用法 )

常常在网上看到有人询问:如何把 java 程序编译成 .exe 文件.通常回答只有两种,一种是制作一个可执行的 JAR 文件包,然后就可以像. chm 文档一样双击运行了:而另一种是使用 JET 来进行 编译.但是 JET 是要用钱买的,而且据说 JET 也不是能把所有的 Java 程序 都编译成执行文件,性能也要打些折扣.所以,使用制作可执行 JAR 文件包的方法就是最佳选择了,何况它还能保持 Java 的跨平台特性. 下面就来看看什么是 JAR 文件包吧: 1. JAR 文件包 JAR 文件

Spring MVC 框架的架包分析,功能作用,优点

由于刚搭建完一个MVC框架,决定分享一下我搭建过程中学习到的一些东西.我觉得不管你是个初级程序员还是高级程序员抑或是软件架构师,在学习和了解一个框架的时候,首先都应该知道的是这个框架的原理和与其有关jar的作用.关系.这篇文章总结一下spring框架的相关知识. 一.spirng的简介(高手可以跳过) Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的

spring security源码分析之二---web包分析

Spring 是一个非常流行和成功的 Java 应用开发框架.Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案.一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分.用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统.用户认证一般要求用户提供用户名和密码.系统通过校验用户名和密码来完成认证过程.用户授权指的是验证某个用户是否有权限执行某个操作.在一