问题: 在Spring MVC WEB 开发过程中, 在自己定义的xml配置文件中发现错误.
The prefix "context" for element "context:component-scan" is not bound.
解决办法: 在<beans> 中加入
xmlns:context="http://www.springframework.org/schema/context"
原因: 从错误本身来分析, context 元素没有被界定在哪里. 为什么会这样? 从 xmlns 入手, xmlns 全称 是 XML NameSpace, 它的使用规则是 xmlns:namespace-prefix="namespaceURL". 当这个命名空间被界定后, 所有带有相同的namespace-prefix 的元素都会与这个命名空间( namespaceURL) 相关联. 这样做的好处? 避免XML解析器对XML解析时的发送名字冲突.
通俗上来说: 就是避免元素名字冲突. 例子: ①<table> 这是个桌子 </table> ②<table>这是个表格</table> 通过界定特定的URL, 我们能区分开这个table元素是用来作为桌子tag的还是用来做表格tag的.
补充: 添加以上解决方案之后还会出现错误.
nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'context:component-scan'.
解决方法: 在<beans>中,在xsi:schemaLocation中添加一下两个链接.
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
原因: 首先来了解下什么是(XML Schema Instance)xsi:schemaLocation. 是指具体用到的schema资源. 因为我们使用了context,所以需要提供相应的链接.