解决“通配符的匹配很全面, 但无法找到元素 ‘context:component-scan’ 的声明”问题
笔者在使用idea生成的配置文件时,导入context标签遇到的此错误。
遇到的原因是由于使用context标签未配置完整导致报错,解决方法将参数配置完整可以解决。本文以AOP核心配置文件参数未配置完整举例(其他标签也可按照此方法解决)。
报错前的bean标签内配置参数:
<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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd">
更改错误后的bean标签内配置参数
<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:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
对比两个配置文件可以发现报错的配置文件在xsi:schemaLocation中没有指出context的模式文档位置(xsi:schemaLocation指出模式文档的位置),因此找不到元素,我们添加context模式文档位置即可解决问题。
<beans xmlns:context="http://www.springframework.org/schema/context"
...
xsi:schemaLocation="...
...
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">