分类: SSH&EJB2012-11-23 15:25 4369人阅读 评论(13) 收藏 举报

一、  简介

Spring功能日益强大,不断的版本更新中整合进各种技术,几乎成了企业级开发的御用框架,从开发手册来看,包含了以下七大模块:

Core包是框架的最基础部分,并提供依赖注入(Dependency Injection)管理Bean容器功能。

Context包,构建于Core包上,提供了一种框架式访问对象的方式,有些像JNDI注册。Context封装包继承了beans包的功能,还增加了国际化(I18N),事件传播,资源装载,以及透明创建上下文,例如通过servlet容器。

DAO包提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。并且,JDBC封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs都适用。

ORM包为流行的“关系/对象”映射APIs提供了集成层,包括JDO,Hibernate和iBatis。通过ORM包,可以混合使用所有Spring提供的特性进行“对象/关系”映射,如前边提到的简单声明性事务管理。

AOP包提供了符合AOP Alliance规范的面向方面的编程实现,例如方法拦截器(method-interceptors)和切点(pointcuts),从逻辑上讲,从而减弱代码的功能耦合,清晰的被分离开。

Web包提供了基本的面向Web的综合特性,例如多方文件上传,利用Servlet listeners进行IoC容器初始化和针对Web的applicationcontext。当与WebWork或Struts一起使用Spring时,这个包使Spring可与其他框架结合。

Web MVC提供了面向Web应用的Model-View-Controller实现。Spring的MVC框架并不是仅仅提供一种传统的实现,它提供了一种清晰的分离模型,在领域模型代码和web form之间。并且,还可以借助Spring框架的其他特性。

二、  包结构

自3.0以后包结构就有所变化,将每个模块独立出一个包来,分工明确,用户可以根据不同的需求自行组装Jar,而不是像以前一样将整个Spring.jar引入项目中,下面以3.2M1为例,简单介绍一下Spring的包结构:

spring-core.jar:包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心;

spring-aop.jar:面向切面编程,提供AOP(面向切面编程)实现;

spring-aspects.jar:spring整合了aspectjrt.jar,也可以使用aspectjrt.jar来代替;

spring-beans.jar:springIoC(依赖注入)的基础实现,所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / DependencyInjection(IoC/DI)操作相关的所有类;

spring-context.jar:spring提供在基础 IoC 功能上的扩展服务,此外还提供许多企业级服务的支持,如 邮件服务、任务调度、JNDI定位、EJB集成、远程访问、 缓存以及各种视图层框架的封装等;

spring-context-support.jar:spring-context的扩展支持,包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(JavaMail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。

spring-asm.jar:ASM是小巧轻便的 Java 字节码操控框架 ,它能方便地生成和改造 Java 代码。 Hibernate和 Spring在底层都用到了 ASM(CgLib底层用的 asm);

spring-expression.jar:spring表达式语言;

spring-instrument.jar:spring3.1对服务器的代理接口

spring-instrument-tomcat.jar:spring3.1对 Tomcat 的连接池的集成;

spring-jdbc.jar:包含对Spring对JDBC数据访问进行封装的所有类;

spring-jms.jar:提供了对JMS1.0.2/1.1的支持类;

spring-orm.jar:包含Spring对DAO特性集进行了扩展,使其支持 iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。这个jar文件里大部分的类都要依赖spring-dao.jar里的类,用这个包时你需要同时包含spring-dao.jar包;

spring-oxm.jar:spring对Object/XMI的映射的支持,可以让JAVA与XML之间来回切换;

spring-struts.jar:整合Struts的支持;

spring-test.jar:spring对Junit等测试框架的简单封装;

Spring-tx.jar:提供对事务的支持;

spring-web.jar:包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类;

Spring-webmvc.jar:这个jar文件包含Spring MVC框架相关的所有类。包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、 XSLT相关类。当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类;

spring-webmvc-portlet.jar:springMVC的增强,支持portlet标准(JSR168/JSR286);

via(若如初见)

三、  优劣

Spring有非常多的优点,每个功能模块带来的好处是不尽相同的,比如依赖反转促进松耦合,使程序可扩展性加强,让你的Bean得到统一的管理,AOP技术分离和逻辑无关的系统级服务,让程序内聚性增强,还有声明式事务、MVC等等带来的好处。归根结底Spring最大的优点——解决企业应用的复杂性,使J2EE易用。这也是Spring开发者的初衷也是奋斗目标,到目前为止本人只用过Spring的冰山一角,很难一一说出它的好处,更没有发掘它的缺点,总体感觉,Spring框架值得拥有。

Spring--开篇 (spring优缺点、模块组件、各个jar包详解)的更多相关文章

  1. 【spring】jar包详解与模块依赖关系

    以spring3.X为例 jar包详解 1. spring-core.jar:包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心: 2. spri ...

  2. Spring各个jar包详解

    Spring各jar包详解 spring.jar 是包含有完整发布模块的单个jar 包.但是不包括mock.jar,aspects.jar, spring-portlet.jar, and sprin ...

  3. Spring jar包详解

    Spring jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spri ...

  4. Spring——jar包详解(转)

    Spring——jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spr ...

  5. spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途

    Spring4 Jar包详解 SpringJava Spring AOP: Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects: Spring提供的对Aspec ...

  6. 常见 jar包详解

        常见 jar包详解 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期 ...

  7. Java axis2.jar包详解及缺少jar包错误分析

    Java  axis2.jar包详解及缺少jar包错误分析 一.最小开发jar集 axis2 开发最小jar包集: activation-1.1.jar axiom-api-1.2.13.jar ax ...

  8. Java打jar包详解

    Java打jar包详解 一.Java打jar包的几种方式https://www.cnblogs.com/mq0036/p/8566427.html 二.MANIFEST.MF文件详解https://w ...

  9. Spring 3.x jar 包详解 与 依赖关系

    以下的内容我会持续更新(当然是我有新发现的时候); 以下内容是我在网上搜索.整理.修改的而成的内容.由于很多内容都是转载了,无法追溯到源头,因此无法一一对原作者进行道谢. 这几天,我查阅大量的官方的文 ...

  10. Spring 下载与安装以及spring 3.2.9 jar包详解

    一.Spring简介  Spring官网改版后,很多项目的完整zip包下载链接已经隐掉了,虽然Spring旨在引导大家用更“高大上”的maven方式来管理所依赖的jar包,但是完全没想到中国的国情,在 ...

随机推荐

  1. python迭代器、装饰器和生成器

    装饰器 1.装饰器的作用 1. 装饰器作用:本质是函数(装饰其他函数)就是为其他函数添加其他功能 2. 装饰器必须准寻得原则: 1)不能修改被装饰函数的源代码 2)不能修改被装饰函数的调用方式 3.实 ...

  2. Vulnhub 靶场 Os-hackNos WP

    About Os-hackNos 描述 Difficulty : Easy to Intermediate Flag : 2 Flag first user And second root Learn ...

  3. WordCount程序(Java)

    Github项目地址:https://github.com/softwareCQT/web_camp/tree/master/wordCount 一.题目描述 实现一个简单而完整的软件工具(源程序特征 ...

  4. Natas11 Writeup(常见编码、异或逆推、修改cookie)

    Natas11: 页面提示cookie被异或加密保护,查看源码,发现了一个预定义参数和三个函数. //预定义参数,猜测将showpassword设置为yes即可得到密码. $defaultdata = ...

  5. [组件封装]微信小程序-图片批量上传照片墙

    描述 批量上传图片, 可设置最大上传个数, 可删除, 可设置默认值. 效果 源码 pictures-wall.wxml <view class="picturesWall"& ...

  6. Android Studio Run/Debug configuration error: Module not specified

    如下图,配置时没有module可选,因此报错error: Module not specified 解决方法: 1.打开根目录的settings.gradle,删除include ':app' 2.在 ...

  7. UVa 11059 最大乘积 java 暴力破解

    题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...

  8. fastai 官方教程之查看数据

    本文为fastai官方教程编译版本.若有错误,欢迎指正. 总目录: *查看数据:本节为初级教程,介绍怎样快速的查看你的数据和模型预测结果.* 推理学习器(Inference Learner):本节为中 ...

  9. 一文上手Tensorflow2.0(四)

    系列文章目录: Tensorflow2.0 介绍 Tensorflow 常见基本概念 从1.x 到2.0 的变化 Tensorflow2.0 的架构 Tensorflow2.0 的安装(CPU和GPU ...

  10. 旷视6号员工范浩强:高二开始实习,“兼职”读姚班,25岁在CVPR斩获第四个世界第一...

    初来乍到,这个人说话容易让人觉得"狂". "我们将比赛结果提交上去,果不其然,是第一名的成绩."当他说出这句话的时候,表情没有一丝波澜,仿佛一切顺理成章. 他说 ...