本文出处:http://blog.csdn.net/bjyfb/article/details/8216858 转载
一、 简介
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框架值得拥有。