java 의존성 - Spring 3.0에 포함시킬 maven 종속성은 무엇입니까?




충돌 에러 (7)

Spring 3.0 (and maven)으로 첫 번째 프로젝트를 수행하려고합니다. 나는 꽤 많은 프로젝트에서 Spring 2.5 (및 입문서 버전)를 사용 해왔다. 그럼에도 불구하고 필자는 pom.xml에서 의존성으로 정의해야하는 모듈을 다소 혼란 스럽습니다. 난 단지 핵심 컨테이너 함수 (bean, 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>

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


Answers

이것을 시도 할 수 있습니다.

<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>`

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

참고로, 나는 그 스프링 용기를 포함시키는 것이 정말 편리하다는 것을 알고 있지만 이것은 다른 프로젝트와 통합 할 때 정말로 문제가됩니다. 종속성 시스템의 이점 중 하나는 종속성 간의 버전 충돌을 해결한다는 것입니다.

내 라이브러리가 spring-core : 2.5에 의존하고 내 라이브러리와 uber-spring : 3.0에 의존한다면 클래스 패스에 2 가지 버전의 스프링이있다.

제외를 통해이 문제를 해결할 수 있지만 종속성을 올바르게 나열하고 이에 대해 걱정할 필요가 없습니다.


spring jars에 대한 스프링 - 컨텍스트 의존성을 추가 할 수 있습니다. 당신은 그것과 함께 다음 항아리를 얻을 것이다.

<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>

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


이 질문은 여전히 ​​많은 의견을 갖고있는 것처럼 보이므로 Spring 4+의 경우 Spring BootSpring Boot 스타터 POM을 사용하는 것이 가장 쉽다는 점에 유의하는 것이 유용 할 수 있습니다.

Spring Boot를 사용하면 관리해야 할 의존성이 줄어들며 충돌이 적어지고 잘 작동되는 잘 작동하는 Spring Context를 설정하는 것이 훨씬 쉽다. 나는 그것을 매우 추천한다.


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

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 문서 페이지를보십시오.


Spring 문서에서 :

Spring 2.0 이상에서 @Repository 어노테이션은 저장소의 역할 또는 스테레오 타입 (데이터 액세스 객체 또는 DAO라고도 함)을 충족시키는 모든 클래스의 마커입니다. 이 마커의 사용 중에는 예외 자동 번역이 있습니다.

스프링 2.5는 @Component , @Service , @Controller 와 같은 스테레오 타입 주석을 추가로 도입했다. @Component 는 모든 Spring 관리 구성 요소의 일반 스테레오 타입입니다. @Repository , @Service@Controller 는 예를 들어 지속성 레이어, 서비스 레이어 및 프리젠 테이션 레이어와 같이보다 구체적인 사용 사례를 위해 @Component 를 전문화 한 것입니다.

따라서 @Component 하여 구성 요소 클래스에 주석을 달 수 있지만 대신 @Repository , @Service 또는 @Controller 로 주석을 달아 클래스를 도구로 처리하거나 애스펙트와 연결하는 데 더 적합합니다. 예를 들어, 이러한 스테레오 타입 주석은 pointcuts에 이상적인 타겟을 만듭니다.

따라서 서비스 계층에 @Component 또는 @Service 를 사용하도록 선택하는 경우 @Service 가 분명히 더 나은 선택입니다. 마찬가지로 위에서 설명한 것처럼 @Repository 는 이미 지속성 계층에서 자동 예외 변환의 표식으로 지원됩니다.

┌────────────┬─────────────────────────────────────────────────────┐
│ Annotation │ Meaning                                             │
├────────────┼─────────────────────────────────────────────────────┤
│ @Component │ generic stereotype for any Spring-managed component │
│ @Repository│ stereotype for persistence layer                    │
│ @Service   │ stereotype for service layer                        │
│ @Controller│ stereotype for presentation layer (spring-mvc)      │
└────────────┴─────────────────────────────────────────────────────┘




java spring maven-2 dependencies