`

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)。

分享到:
评论

相关推荐

    jspm面向学生成绩分析系统--lw.zip

    总之,这个基于Java的Spring Boot框架开发的项目具有简单、高效、可扩展和强大的优点。它将帮助开发人员快速构建稳定、灵活的应用程序,并提供了丰富的功能和工具来满足各种业务需求。无论是中小型企业还是大型企业...

    202201014.基金分析系统的设计与实现ssm.zip

    总之,这个基于Java的Spring Boot框架开发的项目具有简单、高效、可扩展和强大的优点。它将帮助开发人员快速构建稳定、灵活的应用程序,并提供了丰富的功能和工具来满足各种业务需求。无论是中小型企业还是大型企业...

    青少年体质健康数据管理与分析系统--lw.zip

    总之,这个基于Java的Spring Boot框架开发的项目具有简单、高效、可扩展和强大的优点。它将帮助开发人员快速构建稳定、灵活的应用程序,并提供了丰富的功能和工具来满足各种业务需求。无论是中小型企业还是大型企业...

    新冠病例智能统计与相应预防措施分析系统--lw.zip

    总之,这个基于Java的Spring Boot框架开发的项目具有简单、高效、可扩展和强大的优点。它将帮助开发人员快速构建稳定、灵活的应用程序,并提供了丰富的功能和工具来满足各种业务需求。无论是中小型企业还是大型企业...

    基于Spring Boot在线远程考试系统的设计与实现.zip

    该系统利用了Spring Boot框架的众多优点,包括自动配置、独立运行以及内嵌Web服务器等,以简化部署和开发过程。系统特点:用户友好:提供直观的用户界面,使考生和管理员都能快速上手,无需复杂的培训。多角色支持:...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    基于微服务架构的小区生活服务平台的设计与实现-包含源码-说明文档-演示视频.zip

    分析功能调整与基于微服务架构的小区生活服务平台实现的实际需求相结合,讨论了JSP开发基于微服务架构的小区生活服务平台 的使用。 关键字:基于微服务架构的小区生活服务平台 JSP技术 Spring Boot框架 Vue框架 ...

    java8集合源码分析-springboot:学习springboot

    集合源码分析 Springboot的重要性 简化部署、简化配置、简化编码、快速创建 SpringBoot启动流程解析 章节目录 ·一:环境准备 ·Java8、·Maven3.3、·IntelliJIDEA、·Mysql5.7+ Java8新特性 ·Lambda表达式、·...

    jsp+ssm+springboot在线答疑系统【毕设源码+PPT+视频讲解】.rar

    分析功能调整与在线答疑系统实现的实际需求相结合,讨论了java开发在线答疑系统的使用。 关键字:在线答疑系统 java技术 SpringBoot框架 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:...

    jsp+ssm+springboot在线BLOG网平台【毕设源码+PPT+视频讲解】.rar

    分析功能调整与在线BLOG网实现的实际需求相结合,讨论了JSP开发在线BLOG网的使用。 关键字:在线BLOG网 JSP技术 SpringBoot框架 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql ...

    电子商城系统设计实习报告.doc

    7 2.2 合作院校 7 3 系统需求 8 3.1 需求说明 8 3.2 名词定义 8 4 需求分析 8 4.1 项目背景 8 4.2 功能要求 9 4.3 电子商城功能描述 10 4.4 系统包括的范围 10 4.5 系统用户说明 10 4.6 非功能要求 10 5 概要设计 11...

    Java语言基础下载

    文档对象功能及其作用 538 document中三个主要的对象 539 文档对象的基本元素 541 窗口及输入输出 544 输出流及文档对象 546 简单的输入、输出例子 547 内容总结 551 独立实践 552 第二十八章: Servlet 553 学习...

    JAVA人力资源管理系统设计文档.doc

    人力资源管理系统,Java, B/S模式, Struts2, Spring, Mybatis MySQL, DWZ框架 目录 目录 III 第一章 绪论 1 1.1 人力资源管理系统开发背景 1 1.2人力资源管理系统开发意义 1 1.3 人力资源管理系统可行性分析 ...

Global site tag (gtag.js) - Google Analytics