Spring配置aop:aspectj-autoproxy报无元素声明错误咨询
报错现象
编写Spring配置XML文件时出现如下XML校验错误:
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'aop:aspectj-autoproxy'.
原配置文件内容:
<?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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop/ http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <aop:aspectj-autoproxy/> </beans>
已引入的AOP相关依赖:
spring-aop-4.1.4.RELEASE.jar aopalliance-1.0.jar aspectjrt-1.7.4.jar aspectjtools-1.7.4.jar aspectjweaver-1.9.9.1.jar cglib-3.3.0.jar asm-7.1.jar
完成依赖引入后报错未消除。
排查与解决步骤
- 修正XML命名空间配置错误
该报错的核心触发原因是xsi:schemaLocation中AOP的命名空间地址多了尾部斜杠,写为了http://www.springframework.org/schema/aop/,和头部xmlns:aop声明的http://www.springframework.org/schema/aop无法匹配,导致校验器找不到对应标签的XSD定义。
同时你实际使用的Spring版本是4.1.4,XSD配置写的是3.0版本,存在版本错配,修正后的xsi:schemaLocation配置如下:
如果不想手动维护XSD版本号,可以直接去掉XSD路径中的版本号,Spring会自动从本地依赖Jar包中读取匹配当前版本的XSD文件,配置示例:xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">- 修正XML命名空间配置错误
- 修复依赖版本不兼容问题
当前引入的aspectjweaver-1.9.9.1.jar版本过高,和Spring 4.1.4.RELEASE版本不兼容,Spring 4.1.x系列适配的AspectJ版本为1.8.x,需要将aspectjrt、aspectjtools、aspectjweaver三个依赖统一调整为1.8.14版本,避免后续运行时出现类找不到、方法签名不匹配的异常。
- 修复依赖版本不兼容问题
- 清理IDE校验缓存
如果完成上述两步修改后IDE仍然显示校验错误,手动触发一次XML文件校验,或者清理IDE缓存后重启即可,不需要额外引入其他依赖。
- 清理IDE校验缓存
内容的提问来源于stack exchange,提问作者Debaprasad Jana
相关产品推荐
相关产品推荐

