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

LVGL 9.4 性能调优实战:如何通过脏区合并与tile分块,让你的嵌入式UI流畅度翻倍 本文深入探讨LVGL 9.4中的性能优化技术,重点介绍脏区合并与tile分块如何显著提升嵌入式UI流畅度。通过实战案例和源码分析,详细解析局部刷新策略、显示框架调优及性能瓶颈诊断方法,帮助开发者在STM32、ESP32等资源受限设备上实现丝滑的UI体验。 阅读详情

相关推荐

别再为模糊的3D重建头疼了!手把手教你用3DSlicer处理DICOM数据,搞定医学影像三维可视化

本文详细解析了医学影像三维重建中常见的模糊问题,并手把手教你使用3DSlicer处理DICOM数据,实现精准的三维可视化。从层厚设置到数据格式转换,再到重建算法选择和渲染参数微调,提供了一套完整的优化方案,特别适合临床医生和医学影像处理人员提升工作效率。

weixin_28693447的博客 251

通过idea打包java Maven项目 架包与全包

方法:maven —> Plugins —> assembly —>assembly:assembly。方法:maven —> Lifecyle —> Clean —> Package。架包定义:指仅将代码打包到jar中,在运行的平台必须保证依赖。全包定义:将maven项目中的依赖于代码都打为一个包。新建主目录文件:assembly.xml。

有勇气的牛排博客 3442

汇编语言(第4版)王爽 课程设计2 详细实现(一、虚拟模式DOS运行篇)

由于虚拟模式的限制,我们编写的许多逻辑暂时不能被检验,而因为《汇编语言》编写时间较早,其所依赖的运行环境如今只能够依靠虚拟机来搭建。比如实模式DOS,搭建步骤比较繁琐,因此我将其它的部分放在下一篇文章中进行讲解。事实上,我们实现的程序属于《汇编语言》课程设计2中任务程序部分,其中的完整任务还涉及到将该任务程序安装到软盘等操作,这些也都需要在实模式下才能运行,所以统一放到下一篇文章进行实现。

m0_73327328的博客 2824

框架?

   框架和类库等概念的出现都是源于人们对复用的渴望。“不要重复发明轮子”,成了软件界的一句经典名言。从最初的单个函数源代码的复用,到面向对象中类的复用(通常以类库的形式体现),再到基于组件编程中二进制组件(.NET中是以IL程序集形式存在的)的复用,人们复用软件的抽象层次越来越高。现在,框架复用是抽象层次的又一提升,框架的复用不仅仅是功能的复用,更是设计的复用。 1.1 框架与类库的区别 ...

weixin_34186931的博客 503

用Omniverse Kit开发第一个USD插件:从环境配置到实战案例(Python 3.7版)

本文详细介绍了如何使用NVIDIA Omniverse Kit和Python 3.7开发第一个USD插件,涵盖从环境配置到实战案例的全过程。通过创建可实时同步材质属性的USD插件,开发者可以快速掌握Omniverse开发框架,提升3D内容创作效率。

x8y9z0的博客 589

迪文屏【0】——从零搭建工程:图片显示、文本变量配置与串口数据交互实战

本文以迪文屏T5L系列为例,详细介绍了从零搭建HMI工程的完整流程。内容涵盖硬件软件准备、DGUS工程创建、背景图片显示、文本变量配置,并重点演示了如何通过串口指令实时修改屏幕数据变量,实现动态交互。旨在帮助开发者快速掌握迪文屏开发的核心步骤与数据交互方法。

alpha的博客 349

简述 SpringMVC 起到的作用有哪些?

SpringMVC是一种用于创建Web应用程序的框架,主要起到以下几个作用:1.提供一个模型视图控制器(MVC)架构,可以帮助开发人员更好地分离业务逻辑、模型对象、视图模板和其他模型组件。2.提供一种精细的处理用户输入的控制器,这使得开发人员可以以简单的方式处理Web请求。3.提供一种模型和视图的轻量级容器,可以帮助开发人员更加高效地处理应用程序。4.提供很好的客户端支持,可以支持多种浏览器,包括...

weixin_42596246的博客 2063

为什么你的XGBoost多分类效果不如预期?可能是这5个参数没调对

本文深度剖析了XGBoost模型在处理多分类问题时效果不佳的五大关键参数陷阱。针对多分类问题的独特性,文章提供了max_depth、learning_rate、采样参数及正则化参数等核心参数的量化调整策略与诊断方法,帮助开发者精准调优,有效提升模型在各类别上的均衡性能与泛化能力。

weixin_29182481的博客 296

一篇文章带你入门spring

注:本篇文章不在于让你了解spring的全部,而是创建一个入门的spring程序,让你有一个spring的初体验Spring开发所需的jar包分为两个部分Spring框架包和第三方依赖包。

qq_52988841的博客 523

手把手教你理解ARM SoC中的PPU:电源管理IP的配置与实战避坑指南

本文深入解析ARM SoC中的PPU(Power Policy Unit)电源管理IP,提供详细的配置指南与实战避坑技巧。从PPU基础架构、寄存器配置到与PCSM的协同工作,全面介绍如何优化电源管理策略,解决常见配置误区,并分享高级调试与性能优化方法,助力工程师提升低功耗SoC设计效率。

weixin_28693447的博客 481

深入LSM6DSL的FIFO连续模式:基于STM32和MEMS库的数据流高效处理指南

本文深入探讨了LSM6DSL的FIFO连续模式,结合STM32硬件平台和ST官方MEMS库,提供了高效的数据流处理方案。通过优化I2C通信时序、中断驱动设计以及动态ODR调整,实现低功耗数据采集与处理,显著提升嵌入式传感器应用的性能和续航能力。

weixin_30387799的博客 350

java架包_Java基础——关于jar包的知识

在学习jar包之前,要先弄懂Java包,以及关于Java包的相关概念。一、包为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。格式为:package pkg1[.pkg2[.pkg3…]];代码实例:1 /**2 *@version 2017-06-173 *@author zhou4 */567 package cn.co...

weixin_30424427的博客 2682

操作系统 | 知识梳理 | 复习(上)

操作系统复习

知识库搭建ing 3476

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

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

xycfhello的博客 855

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

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

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

JhnoLee的专栏 599

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

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

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

weixin_33743703的博客 103

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Spring框架的有哪些优点?

Spring具有简单、可测试和松耦合等特点,从这个角度出发,Spring不仅可以用于服务器端开发,也可以应用于任何Java应用的开发中。关于Spring框架优点的总结,具体如下: ● 非侵入式设计 Spring是一种非侵入式(non-invasive)框架,它可以使应用程序代码对框架的依赖最小化。 ● 方便解耦、简化开发 Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大的降低了组件之间的耦合性。 ● 支持AOP Spring提供了对AOP的支持,它允许将一

Aa112233aA1的博客 8735

Spring框架及其优点

1. 框架简介 Spring 是另一个主流的 Java Web 开发框架,该框架是一个轻量级的应用框架,具有很高的凝聚力和吸引力。Spring 框架因其强大的功能以及卓越的性能而受到众多开发人员的喜爱。 Spring 是分层的 Java SE/EE full-stack 轻量级开源框架,以 IoC(Inverse of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切面编程)为内核,使用基本的 JavaBean 完成以前只可能由 EJB 完成的工作,取代了

Q1368089323的博客 1290

spring框架概述及其优点

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

阿火 3380

Spring框架与其他框架(如Struts、Hibernate等)相比有何独特之处?Spring框架的主要优点有哪些?

这些问题只是Spring框架面试的一部分,实际的面试可能会根据候选人的经验和技能深度进行更深入的探讨。同时,结合实际的项目经验,阐述如何在实际开发中使用Spring框架解决问题,也是非常重要的。这意味着开发人员可以在Spring的基础上,结合其他框架(如Struts、Hibernate、MyBatis等)的优势,构建出更加灵活和强大的应用程序。综上所述,Spring框架以其强大的功能、卓越的性能和灵活的扩展性,赢得了众多开发人员的喜爱和信赖。这不仅简化了事务管理的复杂性,还提高了代码的可读性和可维护性。

Aaron的博客 1447

使用Spring框架的优点

使用Spring框架的优点:简化Java开发 Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合等方面从Spring中获益。 Spring通过以下四种策略降低Java开发的复杂性: 基于POJO的轻量级和最小侵入性编程 基于切面和...

记录时间带走的东西 1026
上一篇: 编程的精义
下一篇: js处理小数 , toFixed()的潜在问题
yufei_java
博客等级 码龄10年 18粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值