복붙노트

[SPRING] Java 8 Spring 호환성

SPRING

Java 8 Spring 호환성

현재 Java 7에서 Java 8로 응용 프로그램을 마이그레이션하고 있으며 현재 Spring 3.1.6 jar를 실행 중입니다. 이것은 Java 8과 호환 될 것인가 아니면 Spring jar를 업그레이드해야합니까?

Spring 4x 버전은 Java 8을 자연스럽게 지원한다는 것을 이해합니다. 그러나 이것은 시간이 중요하며 최대한 적은 항아리로 변경하려고합니다.

해결법

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

    1.기본적으로 Spring 3.x 버전은 Java-7까지만 지원합니다. Java-8로 마이그레이션하려면 Spring 4.x 버전을 사용해야합니다.

    기본적으로 Spring 3.x 버전은 Java-7까지만 지원합니다. Java-8로 마이그레이션하려면 Spring 4.x 버전을 사용해야합니다.

    소스 기사에 대한이 링크를 클릭하십시오.

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

    2.아니 호환되지 않습니다. 나는 같은 문제를 겪었으며 많은 사람들이 Java 8이 이전 버전의 Java와 완벽하게 하위 호환이 가능하다고 말할 것입니다. 이는 사실이 아닙니다.

    아니 호환되지 않습니다. 나는 같은 문제를 겪었으며 많은 사람들이 Java 8이 이전 버전의 Java와 완벽하게 하위 호환이 가능하다고 말할 것입니다. 이는 사실이 아닙니다.

    이것은 정확한 문제에 대한 아주 좋은 설명을 가지고 있습니다. 자바 8로 자바 7 타겟 코드를 실행했습니다.

    https://gist.github.com/AlainODea/1375759b8720a3f9f094

    ConcurrentHashMap의 API가 2 개의 Java 릴리스 사이에서 변경되었으므로 시작시 봄 방학이 끝나고

    SEVERE: Context initialization failed
    java.lang.NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
        at org.apache.catalina.core.ApplicationContext.getInitParameterNames(ApplicationContext.java:368)
        at org.apache.catalina.core.ApplicationContextFacade.getInitParameterNames(ApplicationContextFacade.java:367)
        at org.springframework.web.context.support.WebApplicationContextUtils.registerEnvironmentBeans(WebApplicationContextUtils.java:201)
        at org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.postProcessBeanFactory(AbstractRefreshableWebApplicationContext.java:163)
    

    나는 Spring 4.x로 업그레이드 할 수밖에 없었다. (4.x로 바로 넘어 갔을 때 3.2 또는 그 이상이 작동하는지 확신 할 수 없다)

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

    3.일부 라이브러리 (또는 JRE 자체)가 JDK 8이고 spring의 구성 요소 스캔 기능이 활성화 된 경우 (이러한 libs / jdk 클래스를 검색하는 경우) 최소 스프링 버전은 3.2.10-RELEASE입니다.

    일부 라이브러리 (또는 JRE 자체)가 JDK 8이고 spring의 구성 요소 스캔 기능이 활성화 된 경우 (이러한 libs / jdk 클래스를 검색하는 경우) 최소 스프링 버전은 3.2.10-RELEASE입니다.

    그 이유는 봄에 컴파일 된 클래스를 스캔하고 주석 (annotation), 구현 된 인터페이스 등을 감지하는 데 사용되는 ASM (Spring이 사용하는 라이브러리)의 업그레이드입니다.

    자세한 내용은 SPR-11979 및 SPR-11656을 참조하십시오.

  4. ==============================

    4.Java 8 및 jvm 8은 이전 버전의 Java와 완벽하게 하위 호환됩니다. Java는 새로운 릴리스가 이전 코드를 손상시키지 않도록 단호한 조치를 취합니다. Java 7 용으로 작성한 코드는 Java 8로 컴파일 할 수 있으며 Java 7 용으로 컴파일 한 코드는 jvm 8에서 실행할 수 있습니다.

    Java 8 및 jvm 8은 이전 버전의 Java와 완벽하게 하위 호환됩니다. Java는 새로운 릴리스가 이전 코드를 손상시키지 않도록 단호한 조치를 취합니다. Java 7 용으로 작성한 코드는 Java 8로 컴파일 할 수 있으며 Java 7 용으로 컴파일 한 코드는 jvm 8에서 실행할 수 있습니다.

  5. from https://stackoverflow.com/questions/32278878/java-8-spring-compatibility by cc-by-sa and MIT license