使用Spring将Java从5升级到8

时间:2019-01-11 12:32:42

标签: java spring java-8 java-5

我正在处理仍在JDK5上运行的旧版应用程序。作为我们新要求的一部分,我们需要将其更新为JDK8。据我的理解,由于Java是向后兼容的,因此应该可以。当我使用JDK 8进行编译时,构建成功。但是在启动时,出现以下错误:

  

创建名称为'AuthorisationDialogController'的bean时出错   类路径资源   [com / some / application / conf / dispense / dispense-controllers.xml]:错误   设置属性值;嵌套异常为   org.springframework.beans.PropertyAccessExceptionsException:   PropertyAccessExceptionsException(1个错误);嵌套的   propertyAccessExceptions是:   [org.springframework.beans.TypeMismatchException:转换失败   类型的属性值   [com.some.application.dispense.context.DispenseContextImpl]至   属性的必需类型[com.some.application.admin.AdminContext]   'context']

我的依赖项如下所示:

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring</artifactId>
            <version>1.2.7</version>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymock</artifactId>
            <version>2.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.easymock</groupId>
            <artifactId>easymockclassextension</artifactId>
            <version>2.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>cglib</groupId>
            <artifactId>cglib</artifactId>
            <version>2.1_3</version>
        </dependency>
        <dependency>
            <groupId>com.micros</groupId>
            <artifactId>aaaa</artifactId>
            <version>${externalVendor}</version>
        </dependency>
        <dependency>
            <groupId>com.micros</groupId>
            <artifactId>bbb</artifactId>
            <version>${externalVendor}</version>
        </dependency>
        <dependency>
            <groupId>com.micros</groupId>
            <artifactId>ccc</artifactId>
            <version>${externalVendor}</version>
        </dependency>
        <dependency>
            <groupId>com.micros</groupId>
            <artifactId>ddd</artifactId>
            <version>${externalVendor}</version>
        </dependency>
        <dependency>
            <groupId>com.micros</groupId>
            <artifactId>eeee</artifactId>
            <version>${externalVendor}</version>
        </dependency>
    </dependencies>

我搜索了一下,发现Spring1.2.6可能不支持JDK8。请任何人能帮助我在这里我需要照顾的所有事情。我们还依赖于一些基于Java5构建的外部供应商。

1 个答案:

答案 0 :(得分:0)

如果Spring是一个图书馆,那么您将会看到成功。不是,它是一个框架。

这意味着Spring框架需要了解提供逻辑的插件,这些逻辑可以解决程序所解决的其余“问题”。为了进行正确的注入和接线,Spring使用了库来检查和配置编写为由Spring管理的插件。

这些库对插件进行反射和字节代码处理。这意味着Spring框架需要理解Java 8字节码。您的Spring版本没有。为了获得一个能做到的Spring,您将更新Spring的Apache Maven依赖项;但这会触发需要更新插件以使其在新的Spring版本中正常运行的需求。

简而言之,您将不得不将更多依赖项迁移到较新版本以支持Java 8。

框架可以很棒,因为它们可以节省很多时间;但是,存在软件体系结构风险。如果框架需要更新,则所有插件组件可能都需要修改才能迁移到新版本。春天也不例外。

这就是为什么有些人更喜欢利用库的原因;但是,库并不是万能的,因为您经常需要决定如何集成它们(这意味着您正在编写自己的框架,但是比其他人的框架更容易控制向前迁移)。