Spring⼊门指引之理解Spring的打包⽅式
获取Spring发布包之后,你或许会惊讶的发现:Spring开发⼩组并没有⽤单个JAR⽂件来包含所有代码,⽽是选择建⽴包含有完整发布的单个JAR和8个独⽴JAR⽂件来包含对应的Spring组件。未来版本的组件JAR⽂件数量很可能会有所增加,可令你更加⾃如的选择⾃⼰的代码要包含的特性。
完整发布包
所有发布版本都提供spring.jar⽂件,它差不多包含Spring 类的完整发布包。之所以说“差不多”是因为它实际上并未包含任何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章有介绍)时所需的全部类,以及⽀持、JNDI和邮件集成所需的类。此外这个包还囊括Spring远程调⽤()类,⽤来与模板(templating)引擎如Velocity和FreeMarker集成的类,以及验证基类(base validation class)。值得注意的是,实际上许多类被包含在这个包⾥并不是太恰当,⽐如远程调⽤和EJB⽀持之类的特性,打包成单独的JAR⽂件更为恰当。
spring-core.jar 所有应⽤都要⽤到这个JAR⽂件,它包含访问配置⽂件、创建和管理bean以及进⾏DI操作相关的所有类。如果你的应⽤只需基本的DI⽀持,该JAR⽂件⾜以满⾜需要。此外该JAR⽂件还包含⼀组极为有⽤的⼯具类,Spring代码库⼤量使⽤了这些类,也可以⽤在⾃⼰的应⽤中。
spring-dao.jar 这个JAR⽂件囊括Spring DAO⽀持相关的所有基类,还包含⽤和Spring的事务抽象层(transaction abstraction layer)进⾏数据访问的所有类。为了使⽤声明型事务⽀持,还需在⾃⼰的应⽤⾥包含spring-aop.jar。
spring-mock.jar 前⾯已经提及,Spring提供了⼀整套mock类来辅助应⽤的测试。Spring测试套件使⽤
了其中⼤量mock类,因此它们已久经考验,可令你的应⽤测试更为简单。⾄于模拟(mock)HttpRequest 和HttpServletResponse类在应⽤单元测试中的巨⼤⽤处,更是⽏须赘⾔。
spring-orm.jar 这个JAR⽂件对Spring的标准DAO特性集进⾏了扩展,使其⽀持、iBATIS和JDO。这个JAR⽂件⾥⼤量的类都依赖spring-dao.jar⾥的类,毫⽆疑问你需要同时包含后者。将来每个ORM⼯具或许会单独打包,这样⼀来,使⽤iBATIS时你的应⽤就⽆需再包含Hibernate和JDO相关的类。
spring-.jar 这个JAR⽂件包含应⽤使⽤Spring时所需的核⼼类,包括⾃动载⼊ApplicationContext特性的类、集成类、⽂件上传的⽀持类和⼤量辅助类,⽤来执⾏重复性的任务如解析查询(query)字符串⾥的int值。
spring-m.jar 这个JAR⽂件囊括Spring MVC框架相关的所有类。如果你的应⽤使⽤了独⽴的MVC框架,则⽆需这个JAR⽂件⾥的任何类。第18章会对Spring MVC作更详细的介绍。
如何选择发布包
决定选⽤哪些发布包其实相当简单。如果你正在构建 应⽤并将全程使⽤Spring,那么最好使⽤spring.jar⽂件,以免陷⼊忙于维护不同⽂件之泥沼。同样的,如果你的应⽤仅仅⽤到简单的DI容器,那么只需spring-core.jar即可搞定。如果你对发布的⼤⼩要求很⾼,那么理应精挑细选,只取⽤包含⾃⼰所需特性的JAR⽂件。
validation框架 注意上述组件发布包的粒度实际上并不是那么⼩;不过显然你⾄少可以避免包含⾃⼰的应⽤不需要的全部类(译注:即还是会包含⼀些不需要的类)。或许你可以设法令整个应⽤稍稍变⼩,不过节省空间的重头戏在于如何准确出⾃⼰所需的Spring依赖关系,合者纳之,余者弃之。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论