从弹簧4.3.2升级到5.0.2导致丢失@AliasFor错误

时间:2018-02-20 06:34:20

标签: java spring spring-mvc spring-boot

当我尝试将spring web-mvc应用程序从4.3.2升级到5.0.2时,我在servlet xml中出错。错误发生在以下行中,

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

错误如下,

错误发生处理XML'注释[org.springframework.stereotype.Controller]中属性[value]的@AliasFor声明缺少必需的'attribute'值。'。有关详细信息,请参阅错误日志

这就是我的servlet xml的样子。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:security="http://www.springframework.org/schema/security"
xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.2.xsd">


<security:global-method-security secured-annotations="enabled"/>

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

<mvc:view-controller path="/" view-name="index"/>

<mvc:resources mapping="/resources/**" location="/resources/" />

</beans>

如果我使用5.0.0,则不会发生此错误。由于它抱怨org.springframework.stereotype.Controller中缺少注释,我试图找出Controller中新添加或缺少的内容。我可以看到在5.0.2版本中添加了一个新行,它缺少“属性”。

@AliasFor(annotation = Component.class)

我确信我在版本5.0.2中需要的bean类定义中缺少一些东西。

1 个答案:

答案 0 :(得分:0)

我要检查三件事。

首先,您需要确保您的依赖关系管理是正确的。您可以运行mvn dependency:tree并检查所有Spring依赖项是否使用相同的版本。如果您希望将来避免此类问题,可以使用Spring Framework BOM并让它管理Spring Framework工件的版本:

<dependencyManagement>
    <dependencies>
            <dependency> 
                <groupId>org.springframework</groupId> 
                <artifactId>spring-framework-bom</artifactId> 
                <version>${spring.version}</version> 
                <type>pom</type> 
                <scope>import</scope> 
            </dependency> 
        </dependencies> 
</dependencyManagement>

如果您的依赖关系管理是正确的,那么这可能是一个损坏的JAR。您可以使用mvn dependency:purge-local-repository清除内容并重新下载依赖项。

最后,不再建议在XML中使用版本化模式 - 事实上,从Spring Framework 5.0开始,它不再受支持,请参阅SPR-13499