Spring 3.0에 포함 할 Maven 종속성은 무엇입니까?


114

Spring 3.0 (및 maven)으로 첫 번째 프로젝트를 수행하려고합니다. 저는 꽤 많은 프로젝트에서 Spring 2.5 (및 프라이머 버전)를 사용하고 있습니다. 그럼에도 불구하고 pom.xml에서 종속성으로 정의해야하는 모듈이 다소 혼란 스럽습니다. 핵심 컨테이너 기능 (beans, core, context, el)을 사용하고 싶습니다.

나는 이것을하는 데 익숙했다 :

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    <version>2.5.6</version>
</dependency>

그러나 이제는 버전 3.0에 대한 완전한 패키지 스프링 모듈이 더 이상 없기 때문에 다소 혼란 스럽습니다. 다음을 시도했지만 작동하지 않았습니다 (일부 수업이 누락되었습니다).

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.0.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>3.0.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>3.0.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>3.0.0.RELEASE</version>
    </dependency>

어떤 도움을 주시면 감사하겠습니다!


실제로 두 번째 코드 예제에 지정된대로 작동합니다. 다른 문제로 인해 혼란 스러웠습니다. 불필요한 질문에 대해 죄송합니다. 어쨌든 질문을 유지하는 것이 좋습니다. 사람들이 2.5에서 3.0으로 전환하는 데 동일한 문제가 발생할 수 있기 때문입니다.
Nils Schmidt

답변:


227

Keith Donald 의 Spring 블로그 에 Maven으로 Spring 3 Aritfacts를 얻는 방법에 대해 자세히 설명 하는 정말 멋진 게시물이 있으며, 각 종속성이 필요할 때를 자세히 설명하는 주석이 있습니다.

<!-- Shared version number properties -->
<properties>
    <org.springframework.version>3.0.0.RELEASE</org.springframework.version>
</properties>
<!-- Core utilities used by other modules.
    Define this if you use Spring Utility APIs 
    (org.springframework.core.*/org.springframework.util.*)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Expression Language (depends on spring-core)
    Define this if you use Spring Expression APIs 
    (org.springframework.expression.*)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Bean Factory and JavaBeans utilities (depends on spring-core)
    Define this if you use Spring Bean APIs 
    (org.springframework.beans.*)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-beans</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Aspect Oriented Programming (AOP) Framework 
    (depends on spring-core, spring-beans)
    Define this if you use Spring AOP APIs 
    (org.springframework.aop.*)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Application Context 
    (depends on spring-core, spring-expression, spring-aop, spring-beans)
    This is the central artifact for Spring's Dependency Injection Container
    and is generally always defined-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Various Application Context utilities, including EhCache, JavaMail, Quartz, 
    and Freemarker integration
    Define this if you need any of these integrations-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Transaction Management Abstraction 
    (depends on spring-core, spring-beans, spring-aop, spring-context)
    Define this if you use Spring Transactions or DAO Exception Hierarchy
    (org.springframework.transaction.*/org.springframework.dao.*)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- JDBC Data Access Library 
    (depends on spring-core, spring-beans, spring-context, spring-tx)
    Define this if you use Spring's JdbcTemplate API 
    (org.springframework.jdbc.*)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Object-to-Relation-Mapping (ORM) integration with Hibernate, JPA and iBatis.
    (depends on spring-core, spring-beans, spring-context, spring-tx)
    Define this if you need ORM (org.springframework.orm.*)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Object-to-XML Mapping (OXM) abstraction and integration with JAXB, JiBX, 
    Castor, XStream, and XML Beans.
    (depends on spring-core, spring-beans, spring-context)
    Define this if you need OXM (org.springframework.oxm.*)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-oxm</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Web application development utilities applicable to both Servlet and 
    Portlet Environments 
    (depends on spring-core, spring-beans, spring-context)
    Define this if you use Spring MVC, or wish to use Struts, JSF, or another
    web framework with Spring (org.springframework.web.*)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Spring MVC for Servlet Environments 
    (depends on spring-core, spring-beans, spring-context, spring-web)
    Define this if you use Spring MVC with a Servlet Container such as 
    Apache Tomcat (org.springframework.web.servlet.*)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Spring MVC for Portlet Environments 
    (depends on spring-core, spring-beans, spring-context, spring-web)
    Define this if you use Spring MVC with a Portlet Container 
    (org.springframework.web.portlet.*)-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc-portlet</artifactId>
    <version>${org.springframework.version}</version>
</dependency>
<!-- Support for testing Spring applications with tools such as JUnit and TestNG
    This artifact is generally always defined with a 'test' scope for the 
    integration testing framework and unit testing stubs-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${org.springframework.version}</version>
    <scope>test</scope>
</dependency>

3
감사합니다. 며칠 전에 링크를 발견하고 잃어 버렸기 때문에 실제로 다시 찾아야했습니다 .. 여기에 있으면 Spring Blog보다 사람들을 찾기가 더 쉬울 것입니다.
Tim

그리고 Spring 4의 경우 Spring Boot로 전환하는 것이
Tim

29

Spring (현재)은 하나의 의존성을 사용하여 Spring을 프로젝트에 쉽게 추가 할 수있게합니다.

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>3.1.2.RELEASE</version>
</dependency> 

이것은

[INFO] The following files have been resolved:
[INFO]    aopalliance:aopalliance:jar:1.0:compile
[INFO]    commons-logging:commons-logging:jar:1.1.1:compile
[INFO]    org.springframework:spring-aop:jar:3.1.2.RELEASE:compile
[INFO]    org.springframework:spring-asm:jar:3.1.2.RELEASE:compile
[INFO]    org.springframework:spring-beans:jar:3.1.2.RELEASE:compile
[INFO]    org.springframework:spring-context:jar:3.1.2.RELEASE:compile
[INFO]    org.springframework:spring-core:jar:3.1.2.RELEASE:compile
[INFO]    org.springframework:spring-expression:jar:3.1.2.RELEASE:compile

자세한 내용 은 Spring Framework 문서 페이지를 참조하십시오.


Maven 종속성 해결이 작동하는 방식 (가장 짧은 경로)으로 인해 프로젝트에 Spring Security가있는 경우 이러한 접근 방식은 문제가 될 수 있습니다.-내 Spring Security with Maven Article
Eugen

1
@Eugen 좋은 지적입니다. 이 경우 지원되는 "스프링 코어"아티팩트를 올바른 버전 (안타깝게도 최신 안정 버전이 아님)으로 해결 하는 스프링 보안 아티팩트 를 선언하는 것이 더 좋습니다 .
FrVaBe 2013 년

3
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>3.0.0.RELEASE</version>
</dependency>

2

이 질문은 여전히 ​​많은 뷰를 얻는 것처럼 보이므로 Spring 4 Spring Boot이상에서는 Spring Boot 스타터 POM 사용을 시작하는 것이 가장 쉽다는 점에 유의하는 것이 유용 할 수 있습니다 .

Spring Boot를 사용하면 관리 할 종속성이 줄어들고 (따라서 충돌이 적어) 작동하고 잘 통합 된 Spring Context를 설정하는 것이 훨씬 쉽습니다. 나는 그것을 적극 추천합니다.


1

누락 된 수업은 무엇입니까? 클래스 이름 자체는 누락 된 모듈에 대한 좋은 단서가되어야합니다.

참고로 uber spring jar를 포함하는 것이 정말 편리하다는 것을 알고 있지만 다른 프로젝트와 통합 할 때 실제로 문제가 발생합니다. 종속성 시스템의 이점 중 하나는 종속성 간의 버전 충돌을 해결한다는 것입니다.

내 라이브러리가 spring-core : 2.5에 의존하고 내 라이브러리와 uber-spring : 3.0에 의존한다면 이제 클래스 경로에 두 가지 버전의 spring이 있습니다.

제외를 사용하여이 문제를 해결할 수 있지만 종속성을 올바르게 나열하기가 훨씬 쉽고 걱정할 필요가 없습니다.


1

스프링 항아리에 대한 스프링 컨텍스트 종속성을 추가 할 수 있습니다 . 다음과 같은 항아리가 함께 제공됩니다.

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>

스프링 컨텍스트 종속성

웹 구성 요소도 원한다면 spring-webmvc 종속성을 사용할 수 있습니다 .

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.0.5.RELEASE</version>
</dependency>

Spring webmvc 종속성

원하는 버전을 사용할 수 있습니다. 여기서 5.0.5.RELEASE를 사용했습니다.


0

당신은 이것을 시도 할 수 있습니다

<dependencies>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>3.1.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>3.1.0.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>3.1.0.RELEASE</version>
    </dependency>
</dependencies>`

0

BOM을 사용하여 버전 문제를 해결합니다.

타사 라이브러리 또는 다른 Spring 프로젝트가 이전 릴리스에 대한 전 이적 종속성을 가져 오는 것을 알 수 있습니다. 직접 종속성을 명시 적으로 선언하는 것을 잊은 경우 모든 종류의 예기치 않은 문제가 발생할 수 있습니다.

이러한 문제를 극복하기 위해 Maven은 "BOM (Bill of Materials)"종속성 개념을 지원합니다.

https://docs.spring.io/spring/docs/4.3.18.RELEASE/spring-framework-reference/html/overview.html#overview-maven-bom

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-framework-bom</artifactId>
  <version>3.2.12.RELEASE</version>
  <type>pom</type>
</dependency>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.