Spring-开篇

Spring--开篇

一、  简介

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

Spring-开篇

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

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

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

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

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

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

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

二、  包结构

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

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

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

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

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

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

spring-context-support.jarspring-context的扩展支持,包含支持缓存Cacheehcache)、JCAJMX、邮件服务(JavaMailCOS Mail)、任务计划SchedulingTimerQuartz)方面的类。

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

spring-expression.jarspring表达式语言;

spring-instrument.jarspring3.1对服务器的代理接口

spring-instrument-tomcat.jarspring3.1 Tomcat 的连接池的集成;

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

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

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

spring-oxm.jarspringObject/XMI的映射的支持,可以让JAVAXML之间来回切换;

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

spring-test.jarspringJunit等测试框架的简单封装;

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

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

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

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

                                                                                                                                                                                                              via(若如初见)

三、  优劣

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

2楼lishehe昨天 20:55
师哥加油,看不懂哦,
Re: lishehe1小时前
回复lishehen名词有些听过
Re: StubbornPotatoes1小时前
回复lishehen这个你们迟早会接触。呵呵
1楼llhhyy1989前天 18:59
漂亮,收藏。每个包知道干什么,这样调试的时候才能快速定位
Re: StubbornPotatoes前天 18:59
回复llhhyy1989n行吧,容许了。