快捷搜索:

Spring入门之理解Spring的打包方式

获取Spring宣布包之后,你或许会惊疑的发明:Spring开拓小组并没有用单个JAR文件来包孕所有代码,而是选择建立包孕有完备宣布的单个JAR和8个自力JAR文件来包孕对应的Spring组件。未来版本的组件JAR文件数量很可能会有所增添,可令你加倍自若的选择自己的代码要包孕的特点。

完备宣布包

所有宣布版本都供给spring.jar文件,它差不多包孕Spring framework类的完备宣布包。之以是说“差不多”是由于它实际上并未包孕任何mock类,这些类随Spring一路宣布,作为帮助测试之用。这可是Spring开拓小组的明智抉择,由于宣布利用时你险些从不必要同时分发mock类;你只是在开拓情况下用它们来帮助测试历程。除此之外,spring.jar文件包孕Spring main源码树里所有其它类。

组件宣布包

除了spring.jar文件,Spring还包括前面说起的别的8个JAR文件;此中一个包孕mock类,别的七个包孕Spring framework的自力组件。表2-1列出了这些JAR文件,并伴有对应组件的阐明。

表2-1:Spring组件宣布包

JAR文件

说 明

spring-aop.jar

这个JAR文件包孕在利用中应用Spring的AOP特点时所需的所有类。假如盘算应用其它基于AOP的Spring特点,比如声明型事务治理(declarative transaction management),也必要在利用里包孕这个JAR文件。

spring-context.jar

这个包里的类为Spring核心供给了大年夜量扩展。你可以找到应用Spring ApplicationContext特点(第5章有先容)时所需的整个类,以及支持EJB、JNDI和邮件集成所需的类。此外这个包还席卷Spring远程调用(remoting)类,用来与模板(templating)引擎如Velocity和FreeMarker集成的类,以及验证基类(base validation class)。值得留意的是,实际上许多类被包孕在这个包里并不是太恰当,比如远程调用和EJB支持之类的特点,打包成零丁的JAR文件更为恰当。

spring-core.jar

所有利用都要用到这个JAR文件,它包孕造访设置设置设备摆设摆设文件、创建和治理bean以及进行DI操作相关的所有类。假如你的利用只需基础的DI支持,该JAR文件足以满意必要。此外该JAR文件还包孕一组极为有用的对象类,Spring代码库大年夜量应用了这些类,也可以用在自己的利用中。

spring-dao.jar

这个JAR文件席卷Spring DAO支持相关的所有基类,还包孕用JDBC和Spring的事务抽象层(transaction abstraction layer)进行数据造访的所有类。为了应用声明型事务支持,还需在自己的利用里包孕spring-aop.jar。

spring-mock.jar

前面已经说起,Spring供给了一整套mock类来帮助利用的测试。Spring测试套件应用了此中大年夜量mock类,是以它们已久经磨练,可令你的利用测试更为简单。至于模拟(mock)HttpServletRequest 和HttpServletResponse类在web利用单元测试中的伟大年夜用场,更是毋须赘言。

spring-orm.jar

这个JAR文件对Spring的标准DAO特点集进行了扩展,使其支持Hibernate、iBATIS和JDO。这个JAR文件里大年夜量的类都依附spring-dao.jar里的类,毫无疑问你必要同时包孕后者。将来每个ORM对象或许会零丁打包,这样一来,应用iBATIS时你的利用就无需再包孕Hibernate和JDO相关的类。

spring-web.jar

这个JAR文件包孕web利用应用Spring时所需的核心类,包括自动载入ApplicationContext特点的类、Struts集成类、文件上传的支持类和大年夜量帮助类,用来履行重复性的义务如解析查询(query)字符串里的int值。

spring-webmvc.jar

这个JAR文件席卷Spring MVC框架相关的所有类。假如你的利用应用了自力的MVC框架,则无需这个JAR文件里的任何类。第18章会对Spring MVC作更具体的先容。

若何选择宣布包

抉择选用哪些宣布包着实相称简单。假如你正在构建web利用并将全程应用Spring,那么最好应用spring.jar文件,以免陷入忙于掩护不合文件之泥沼。同样的,假如你的利用仅仅用到简单的DI容器,那么只需spring-core.jar即可搞定。假如你对宣布的大年夜小要求很高,那么理应精挑细选,只取用包孕自己所需特点的JAR文件。

留意上述组件宣布包的粒度实际上并不是那么小;不过显然你至少可以避免包孕自己的利用不必要的整个类(译注:即照样会包孕一些不必要的类)。或许你可以设法令全部利用稍稍变小,不过节省空间的重头戏在于若何准确找出自己所需的Spring依附关系,合者纳之,余者弃之。

您可能还会对下面的文章感兴趣: