복붙노트

[SPRING] 스프링 데이터 저장소와 mongodb로 스프링 애플리케이션 설정하기

SPRING

스프링 데이터 저장소와 mongodb로 스프링 애플리케이션 설정하기

application-context.xml에 mongo 저장소를 정의 할 때 문제가 있습니다.

다음은 XML에서 얻을 오류입니다.

참조 용 스크린 샷을 첨부하고 있습니다. 이클립스 Kepler 버전 및 POM 속성을 사용하고 있습니다.

<java-version>1.7</java-version>
<org.springframework-version>4.0.1.RELEASE</org.springframework-version>
<org.jackson-version>2.3.0</org.jackson-version>
<spring-data-mongodb>1.4.0.RELEASE</spring-data-mongodb>

스프링 데이터 공유 버전은 1.7이다. 스프링 데이터 mongodb 버전 1.4. 컨텍스트 xml을 열면 이클립스 프로젝트의 오류가 표시됩니다.

흥미롭게도 저는 잘 작동하는 또 다른 프로젝트를 가지고 있습니다. 차이점은 스프링 MVC와 잭슨 바이너리가 아니라는 점입니다.

예외 스택 추적 :

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mongo="http://www.springframework.org/schema/data/mongo"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


    <!-- Enables the Spring MVC @Controller programming model -->
    <mvc:annotation-driven />


    <context:component-scan base-package="com.xxxx.yyyyy" />

    <!-- Mongo DB Configuration -->
    <mongo:mongo id="mongo" host="monopolyvm3" port="27017" />
    <mongo:db-factory dbname="test" mongo-ref="mongo" />
    <mongo:db-factory id="mongoDbFactory" dbname="cloud" mongo-ref="mongo" />
    <mongo:repositories base-package="com.xxxx.yyyyy" />

    <bean id="mappingContext" class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />

    <bean id="defaultMongoTypeMapper"
        class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">
        <constructor-arg name="typeKey"><null/></constructor-arg>
    </bean>

    <bean id="mappingMongoConverter" class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">
        <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
        <constructor-arg name="mappingContext" ref="mappingContext" />
        <property name="typeMapper" ref="defaultMongoTypeMapper" />
    </bean>

    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg ref="mongoDbFactory" />
        <constructor-arg name="mongoConverter" ref="mappingMongoConverter" />
        <property name="writeConcern" value="SAFE" />
    </bean>




</beans>

다음 줄에 오류가 있습니다.

해결법

  1. ==============================

    1.제 경우에는 문제를 일으키는 스프링 데이터 JPA 버전이었습니다. 나는 봄 데이터 mongodb 대신 봄 데이터 jpa를 사용하고있다. 나는이 최신 버전을 최신 버전으로 시작했습니다 (spring-framework 4.0.2.RELEASE, spring-data-jpa 1.5.0.RELEASE). 필자는 maven (스프링 측뿐만 아니라 스프링 데이터 측)의 모든 전이 의존성이 최신 버전이지만 종속성이 없음을 확인했습니다.

    제 경우에는 문제를 일으키는 스프링 데이터 JPA 버전이었습니다. 나는 봄 데이터 mongodb 대신 봄 데이터 jpa를 사용하고있다. 나는이 최신 버전을 최신 버전으로 시작했습니다 (spring-framework 4.0.2.RELEASE, spring-data-jpa 1.5.0.RELEASE). 필자는 maven (스프링 측뿐만 아니라 스프링 데이터 측)의 모든 전이 의존성이 최신 버전이지만 종속성이 없음을 확인했습니다.

    이 스레드 다음에 봄 버전을 4.0.0.RELEASE로 다운 그레이드하려고했으나 운이 없었습니다. 나는 내 작업 공간 내에서 spring-context-4.0.2.RELEASE.jar (또한 spring-context-4.0.0.RELEASE.jar)의 org.springframework.context.annotation.AnnotationConfigUtils 클래스를 탐색하여 실제로이를 확인했다. processCommonDefinitionAnnotations는 공개 메소드이므로 IllegalAccessError는 이러한 jar로 인해 발생하는 문제가 될 수 없습니다.

    마지막으로 1.5.0.RELEASE에서 1.4.4.RELEASE로 스프링 데이터 jpa를 다운 그레이드하고 모든 문제는 업데이트시 해결됩니다. STS 3.4를 사용하면 누구에게나 도움이됩니다.

    이것이 처음으로이 오류를 찾았 기 때문에이 오류를 검색하여 여기에 게시하여 동일한 문제에 직면 한 다른 사람들이이 팁으로 잠재적으로이를 해결할 수 있다고 생각했습니다. https://jira.springsource.org/browse/DATAJPA-490에서 버그 보고서를 열었습니다.

    @ 올리버, 제안 된 의존성 관리를 시도했지만 행운을 빕니다. 나는 또한 의존성을 추가했다 : 요청 된대로 버그 보고서에 출력을 나열해라.

  2. ==============================

    2.마지막으로 spring jar 버전을 4.0.0으로 변경하고 Maven 저장소에서 모든 Spring Jar 파일을 제거하고 다시 빌드하려고했습니다. 나는 그것이 4.0.1 spring jars와도 잘 동작 할 것이라고 확신한다. (동일한 설정을 가진 또 다른 프로젝트를 가지고 있었고 4.0.1 jars와 잘 동작했다 :)) 나는이 문제를 Maven과 Eclipse에 공헌했다. 나는 어떤 단서도 전혀 가지고 있지 않다.

    마지막으로 spring jar 버전을 4.0.0으로 변경하고 Maven 저장소에서 모든 Spring Jar 파일을 제거하고 다시 빌드하려고했습니다. 나는 그것이 4.0.1 spring jars와도 잘 동작 할 것이라고 확신한다. (동일한 설정을 가진 또 다른 프로젝트를 가지고 있었고 4.0.1 jars와 잘 동작했다 :)) 나는이 문제를 Maven과 Eclipse에 공헌했다. 나는 어떤 단서도 전혀 가지고 있지 않다.

  3. ==============================

    3.이전 버전의 Spring 버전 (3.2.5 이전 버전)을 실수로 클래스 경로로 가져 오지 않았는지 확인하십시오. 이전 메서드는 예외 public에 나열된 메서드를 갖고 있지 않습니다. 그러면 예외가 발생합니다. 다음 Maven 설정 스 니펫을 사용하여 모든 Spring 라이브러리를 4.0.2에 적용하도록 권장합니다.

    이전 버전의 Spring 버전 (3.2.5 이전 버전)을 실수로 클래스 경로로 가져 오지 않았는지 확인하십시오. 이전 메서드는 예외 public에 나열된 메서드를 갖고 있지 않습니다. 그러면 예외가 발생합니다. 다음 Maven 설정 스 니펫을 사용하여 모든 Spring 라이브러리를 4.0.2에 적용하도록 권장합니다.

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-framework-bom</artifactId>
          <version>4.0.2.RELEASE</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
  4. ==============================

    4.나는 같은 문제에 부딪쳤다. 문제로 싸우는 데 몇 시간을 소비 한 후 @ Avnish의 대답은 나를 올바른 방향으로 가리켰다. 좀 더 구체적으로 말하자면 그가 https://jira.springsource.org/browse/DATAJPA-490에서 열어 놓은 문제는 실제로 문제를 해결했습니다.

    나는 같은 문제에 부딪쳤다. 문제로 싸우는 데 몇 시간을 소비 한 후 @ Avnish의 대답은 나를 올바른 방향으로 가리켰다. 좀 더 구체적으로 말하자면 그가 https://jira.springsource.org/browse/DATAJPA-490에서 열어 놓은 문제는 실제로 문제를 해결했습니다.

    Spring-Data-JPA 1.5.1.BUILD-SNAPSHOT 또는 1.6.0.BUILD-SNAPSHOT에는 문제의 원인이되는 항아리를 정확히 나타내는 가드가 있습니다.

    필자의 경우 Spring IDE 3.4.0에서 Eclipse Juno (4.2)를 사용하여 문제를 일으켰습니다. 문제를 없애기 위해 Spring IDE 3.5.0으로 업그레이드해야했습니다. Juno를 Spring IDE 3.5.0으로 업데이트하기 위해 http://dist.springsource.com/snapshot/TOOLS/nightly/e4.2 업데이트 사이트를 사용해야했습니다.

    또한 STS 3.5.0RC1 이상에서도이 기능을 사용할 수 있습니다.

  5. ==============================

    5.실제 해결책은 Eclipse / STS 스프링 플러그인을 최신 버전으로 업그레이드하는 것입니다.

    실제 해결책은 Eclipse / STS 스프링 플러그인을 최신 버전으로 업그레이드하는 것입니다.

    이것은 https://jira.springsource.org/browse/DATAJPA-490에 언급되어 있습니다.

  6. from https://stackoverflow.com/questions/22118975/setting-up-spring-app-with-spring-data-repositories-and-mongo-db by cc-by-sa and MIT license