zoukankan      html  css  js  c++  java
  • 使用Maven管理Spring[转]

    原文链接: Spring with Maven

    原文日期: 2013年04月17日

    翻译日期: 2014年06月29日

    翻译人员: 铁锚

    翻译原文连接:http://blog.csdn.net/renfufei/article/details/35794985


    1. 概述

    本教程向您展示如何通过 Maven 管理 Spring 的依赖关系.最新的Spring版本可以在 Maven Central仓库 中找到. 也可以访问  mvnrepository:org.springframework.


    2. 使用Maven管理基本的Spring依赖关系 

    Spring被设计为可高度模块化的 —— 使用Spring中的一部分,不应该也不需要引用另一个不相关的部分. 例如, 使用基本的Spring Context可以不使用 Persistence或MVC相关的Spring库. 让我们从一个非常简单的Maven设置开始,这里只使用 spring-context 依赖 :

    1. <properties>  
    2.     <org.springframework.version>3.2.8.RELEASE</org.springframework.version>  
    3.     <!-- <org.springframework.version>4.0.2.RELEASE</org.springframework.version> -->  
    4. </properties>  
    5. <dependency>  
    6.     <groupId>org.springframework</groupId>  
    7.     <artifactId>spring-context</artifactId>  
    8.     <version>${org.springframework.version}</version>  
    9.     <scope>runtime</scope>  
    10. </dependency>  

    spring-context 包定义了Spring注入(Injection)容器,并依赖很少的Spring包: spring-core, spring-expression, spring-aop 和 spring-beans. 通过启用支持一些 Spring的核心技术增强了Spring容器: Spring表达式语言 (SpEL), 面向切面编程 支持以及 JavaBeans机制. 注意,我们将spring-context依赖的范围指定为 runtime scope —— 这将确保在编译时没有任何依赖Spring特定api的部分. 对于一些底层开发的情况,可以将 runtime scope 从选定的Spring依赖项中移除(Maven 默认是compile),但对于简单的项目来说,并不需要在编码时对Spring 的整个框架进行调用. 还要注意,从Spring 3.2开始, 不需要定义CGLIB 依赖关系(现在升级到了CGLIB3.0)—— 它已经被重新打包(现在所有 net.sf.cglib 包变成了 org.springframework.cglib包)并直接集成在 spring-core 这个 JAR包中(详情请参考 JIRA计划文档).


    3. Spring Persistence与Maven

    现在让我们看看 Spring持久化依赖项 —— 主要是 spring-orm :

    1. <dependency>  
    2.     <groupId>org.springframework</groupId>  
    3.     <artifactId>spring-orm</artifactId>  
    4.     <version>${org.springframework.version}</version>  
    5. </dependency>  
     

    它提供了Hibernate和JPA支持,如 HibernateTemplate JpaTemplate —— 以及持久性相关的一些依赖关系: spring-jdbc 和 spring-tx. JDBC Data Access库定义了 Spring JDBC支持 以及 JdbcTemplate, 而 spring-tx 代表了非常灵活的 事务管理的抽象(Transaction Management Abstraction).


    4. Spring MVC与Maven

    要使用Spring Web和Servlet支持,需要在pom中添加两个依赖项, 当然,也需要上面所说的核心依赖:

    1. <dependency>  
    2.     <groupId>org.springframework</groupId>  
    3.     <artifactId>spring-web</artifactId>  
    4.     <version>${org.springframework.version}</version>  
    5. </dependency>  
    6. <dependency>  
    7.     <groupId>org.springframework</groupId>  
    8.     <artifactId>spring-webmvc</artifactId>  
    9.     <version>${org.springframework.version}</version>  
    10. </dependency>  
     

    spring-web 依赖包含Servlet和Portlet环境中常用的web特定工具,而 spring-webmvc 对Servlet环境提供了MVC支持. 因为 spring-webmvc 将 spring-web 作为一个依赖,所以在使用 spring-webmvc时不需要显式地定义 spring-web.


    5. Spring Security与Maven

    关于 Security Maven依赖的深入讨论请参考 Spring Security 3.2.x与Spring 4.0.x的Maven依赖管理.


    6. Spring Test与Maven

    Spring Test框架可以通过以下依赖引入到项目中:

    1. <dependency>  
    2.     <groupId>org.springframework</groupId>  
    3.     <artifactId>spring-test</artifactId>  
    4.     <version>${spring.version}</version>  
    5.     <scope>test</scope>  
    6. </dependency>  
     

    从Spring 3.2开始,Spring MVC Test项目 作为一个独立的项目在github上提供下载 ,并且已被列入 core Test框架,只需要依赖 spring-test 就够了. 注意,那些仍然依赖Spring 3.1及以下版本的较老的项目,独立的旧的Maven依赖仍然存在并可继续使用,几乎是一样的结果. 但不是在Maven Central仓库中,所以使用他们需要添加一个自定义仓库到项目的pom中.


    7. 使用里程碑版本(Milestones)

    Spring的release版本托管在Maven中央仓库中. 但是,如果一个项目需要使用里程碑版本,那么需要在pom中添加Spring自己的Maven库:

    1. <repositories>  
    2.     <repository>  
    3.         <id>repository.springframework.maven.milestone</id>  
    4.         <name>Spring Framework Maven Milestone Repository</name>  
    5.         <url>http://repo.spring.io/milestone/</url>  
    6.     </repository>  
    7. </repositories>  
     

    添加这个仓库以后,项目就可以定义如下的依赖关系:

    1. <dependency>  
    2.     <groupId>org.springframework</groupId>  
    3.     <artifactId>spring-core</artifactId>  
    4.     <version>3.2.0.RC2</version>  
    5. </dependency>  
     

    8. 使用Snapshots(快照)

    和milestons版本一样, Spring的快照版也托管在自己的仓库中:

    1. <repositories>  
    2.     <repository>  
    3.         <id>repository.springframework.maven.snapshot</id>  
    4.         <name>Spring Framework Maven Snapshot Repository</name>  
    5.         <url>http://repo.spring.io/snapshot/</url>  
    6.     </repository>  
    7. </repositories>  
     

    只要在pom中启用了 SNAPSHOT 仓库,就可以引用以下的依赖关系:

    1. <dependency>  
    2.     <groupId>org.springframework</groupId>  
    3.     <artifactId>spring-core</artifactId>  
    4.     <version>3.3.0.BUILD-SNAPSHOT</version>  
    5. </dependency>  
     

    当然, 4.x 也是一样的:

    1. <dependency>  
    2.     <groupId>org.springframework</groupId>  
    3.     <artifactId>spring-core</artifactId>  
    4.     <version>4.0.3.BUILD-SNAPSHOT</version>  
    5. </dependency>  
     

    9. 总结

    本文讨论了使用Maven管理 Spring的实际情况. 主要介绍的是Maven依赖,还有其他一些知识点. 这应该是在项目中使用Spring的一篇很好的入门文章.

  • 相关阅读:
    LeetCode 1122. Relative Sort Array (数组的相对排序)
    LeetCode 46. Permutations (全排列)
    LeetCode 47. Permutations II (全排列 II)
    LeetCode 77. Combinations (组合)
    LeetCode 1005. Maximize Sum Of Array After K Negations (K 次取反后最大化的数组和)
    LeetCode 922. Sort Array By Parity II (按奇偶排序数组 II)
    LeetCode 1219. Path with Maximum Gold (黄金矿工)
    LeetCode 1029. Two City Scheduling (两地调度)
    LeetCode 392. Is Subsequence (判断子序列)
    写程序判断系统是大端序还是小端序
  • 原文地址:https://www.cnblogs.com/vvonline/p/4166994.html
Copyright © 2011-2022 走看看