2.3.1依赖管理和命名规范
依赖管理和依赖注⼊是不同的事情。为了把那些Spring好的功能放到你的应⽤中(像依赖注⼊),你需要装配所有需要的库(jar⽂件),并且在运⾏和编译的时候把它们放到你的类路径中。这些依赖不是注⼊的虚拟组件,⽽是⽂件系统中(典型的)的物理资源。依赖管理的过程包括了定位那些资源,存储以及把它们添加到类路径中。依赖可以是直接的(例如我的应⽤在运⾏时依赖于Spring),或者间接的(例如我的应⽤依赖于commons-dbcp,⽽它⼜依赖于commons-pool).这些间接依赖也被称为“传递”,它们也是很难去标识和管理的。
如果你想使⽤Spring,你需要获取包含你所需要的Spring部分的jar包版本。为了使这更容易,Spring被打包成⼀系列模块,这些模块尽可能的分离了那些依赖,所以,假如你不想写⼀个web应⽤,你就不需要spring-web模块。为了在这个指南中引⽤Spring库模块,我们使⽤简写命名规范spring-*或者spring-*.jar, *代表的是模块的简写名(例如spring-core,spring-webmvc,spring-jms等)。你使⽤的实际jar⽂件名是常见的模块名与版本号串联。(例如spring-core-4.2.5.RELEASE.jar)
每⼀个版本的Spring框架都会在下⾯这些地⽅发布产品:
查询的默认库,使⽤时不需要任何特定的配置。Maven Central中,许多Spring依赖的常⽤库是有效的,⼤部分Maven来管理依赖,所以,这对它们很有益。这⾥的jars名都是在⼀个格式,spring-*-<version>.jar, Maven groupId是
org.springframework.
spring库。除了最终的GA版,这个库还保存开发快照和milestones。Jar⽂件名也像Maven Central⼀样有着同样的
Spring开发版和其他部署在Maven Central中的库的好地⽅。这个库也包含了⼀个含有所有被绑定的Spring jars的发布包,⽅便下载。
所以你第⼀件需要决定的事是如何去管理你的依赖:我们通常推荐使⽤⾃动系统,像Maven,Gradle或者Ivy,但你也可以⼿动下载所有的jars.
你会发现下⾯⼀系列的Spring产品。想要更多完整的关于每⼀个模块的描述,查看2.2部分”模块”。
表2.1 Spring框架产品
GroupId ArtifactId Description
Org.springframework Spring-aop⽀持基于代理的AOP
Org.springframework Spring-aspects基于AspectJ的切⾯
Org.springframework Spring-beans⽀持beans,包括Groovy
Org.springframework Spring-context运⾏时应⽤上下⽂,包括
调度(scheduling)和远程抽
Org.springframework Spring-context-support⽀持集成常⽤第三⽅库到
Spring应⽤上下⽂的类
Org.springframework Spring-core核⼼⼯具,常被许多其他
Spring模块使⽤
Org.springframework Spring-expression Spring表达语⾔(SpEL)
Org.springframework Spring-instrument JVM启动时监控应⽤
Org.springframework    Spring-instrument-tomcat监控Tomcat中的应⽤
Org.springframework Spring-jdbc JDBC⽀持包,包括创建数
据源,以及JDBC访问⽀持
Org.springframework Spring-jms JMS⽀持包,发送和接收
JMS信息的协助类
Org.springframework Spring-messaging⽀持消息结构和协议
Org.springframework Spring-orm对象/关系映射,包括JPA
和Hibernate⽀持
Org.springframework Spring-oxm对象/XML映射
Org.springframework Spring-test⽀持Spring组件,单元测
试和集成测试
Org.springframework Spring-tx事务架构,包括DAO⽀持
和JCA集成
Org.springframework Spring-web Web⽀持包,包括客户端
和web远程
Org.springframework Spring-webmvc Web应⽤的REST web服
务和模型视图控制器实现
Org.springframework Spring-webmvc-portlet在Portlet环境中的MVC实
Org.springframework Spring-websocket WebSocket和SockJS实
现,包括STOMP⽀持
Spring依赖和依赖于Spring
尽管Spring提供集成和⽀持⼤量的企业级和其他额外⼯具,它故意保持它的强制性依赖到绝对的⼩。为了简单使⽤Spring,你不必定位并下载(甚⾄⾃动)⼤量的jar包。对于基本的依赖注⼊,这⾥有⼀个强制性的额外依赖,那就是⽇志(看下⾯来了解更多关于⽇志选项的描述详细)
下⼀步我们来概括关于配置⼀个应⽤中Spring依赖所需要的步骤,⾸先是Maven,然后是Gradle,最终是使⽤Ivy。在所有情况中,如果任何事情还不明确,参考你的依赖管理系统的⽂档,或者看看⼀些⽰例代码。当创建时,Spring本⾝是使⽤Gradle来管理依赖的,以及我们的例⼦⼤多数是使⽤Gradle或者Maven。
依赖管理Maven
如果你正在使⽤Maven来作为依赖管理,你甚⾄不需要明确的⽀持⽇志依赖。例如,为了创建⼀个应⽤上下⽂并使⽤依赖注⼊来配置⼀个应⽤,你的Maven依赖类似于这样:
就是这样。注意,如果你不需要对Spring APIs进⾏编译,scope可以声明为runtime,这就是典型的基本依赖注⼊⽤例。
上⾯的例⼦⼯作于Maven Central 库。为了使⽤Spring Maven库(例如,为了milestones或者开发者快照),你需要在你的Maven配置中指定库位置。对于全部版本:
对于milestones
对于快照
Maven的物料清单依赖
当使⽤的时候,有可能会不⼩⼼混合不同版本的Spring JARs.例如,你可能会发现⼀个第三⽅库,或者其他Spring项⽬,下载⼀个传递依赖到⼀个旧的版本中。如果你忘记了⾃⼰明确的声明⼀个直接的依赖,各种各样不可预测的事情将会产⽣。为了克服这个问题,Maven⽀
持“物料清单BOM”依赖这个概念。你可以导⼊spring-framework-bom到你的dependencyManagement部分来确保所有的spring依赖(不管是直接还是传递的)都是同样的版本。
添加使⽤BoM的好处是,当依赖spring框架产品时,你不再需要指定<version>属性。
依赖管理Gradle
为了⽤构建系统来使⽤Spring库,在repositories部分加⼊适当的URL
你可以适当更改repositories的URL从/release到/milestone或/snapshot。⼀旦库被配置好,你可以⽤常⽤的Gradle⽅式来声明依赖。
spring framework版本查看
依赖管理Ivy
如果你喜欢⽤来管理依赖,这⾥有类似的配置选项。
为了配置Ivy来指向Spring库,添加接下来的解析器到你的l中
你可以适当的改变root的URL从/release到/milestone或者/snapshot.
⼀旦配置,你可以使⽤常⽤的⽅式来添加依赖,⽐如(⽤l)
分布Zip⽂件
尽管使⽤构建系统来⽀持依赖管理是⼀种推荐的⽅式来获取Spring框架,但它仍可以下载⼀个分布zip⽂件。
分配zip⽂件被发布到Spring Maven库(这个是为了我们的⽅便,为了下载他们,你不需要Maven或者任何其他构建系统)。
打开web浏览器到
并选择你想要的适当的⼦⽂件夹来下载⼀个分布zip.分布⽂件以-dist.zip结尾,例如spring-framework-{spring-version}-RELEASE-dist.zip.分布也以和的⽅式发布。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。