当我尝试将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类定义中缺少一些东西。
答案 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。