1. 问题本文将讨论Spring中最常见的配置问题 —— Spring的一个命名空间的名称空间处理程序没有找到。 大多数情况下,是由于一个特定的Spring的jar没有配置在classpath下,让我们列出多数可能出现的缺失配置以及导致的异常。
2. http://www./schema/security 安全名称空间可能是迄今为止在实践中遇到的最广泛的问题: <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www./schema/security" xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:beans="http://www./schema/beans" xsi:schemaLocation=" http://www./schema/security http://www./schema/security/spring-security-3.1.xsd http://www./schema/beans http://www./schema/beans/spring-beans-3.2.xsd"> </beans:beans> 导致以下异常: org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem:
Unable to locate Spring NamespaceHandler for XML schema namespace
[http://www./schema/security]
Offending resource: class path resource [securityConfig.xml]
解决方法很简单 —— 把spring-security-config的jar配置在classpath中(如:maven的pom.xml): <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>3.1.4.RELEASE</version> </dependency> 配置正确的名称空间处理程序 —— 在这种情况下classpath下的SecurityNamespaceHandler会解析安全名称空间中的元素。
3. http://www./schema/aop 发生在使用aop名称空间时,没有将相应的spring的jar配置在classpath下: <beans xmlns="http://www./schema/beans" xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:aop="http://www./schema/aop" xsi:schemaLocation=" http://www./schema/beans http://www./schema/beans/spring-beans-3.2.xsd http://www./schema/aop http://www./schema/aop/spring-aop-3.2.xsd"> </beans> 导致以下异常: org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem:
Unable to locate Spring NamespaceHandler for XML schema namespace
[http://www./schema/aop]
Offending resource: ServletContext resource [/WEB-INF/webConfig.xml]
解决方法与问题2类似,只需将spring-aop的jar配置calsspath下: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>3.2.5.RELEASE</version> </dependency>
4. http://www./schema/tx 使用事务名称空间 —— 一个小但非常有用的名称空间配置: <beans xmlns="http://www./schema/beans" xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:tx="http://www./schema/tx" xsi:schemaLocation=" http://www./schema/beans http://www./schema/beans/spring-beans-3.2.xsd http://www./schema/tx http://www./schema/tx/spring-tx-3.2.xsd"> </beans> 导致以下异常: org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem:
Unable to locate Spring NamespaceHandler for XML schema namespace
[http://www./schema/tx]
Offending resource: class path resource [daoConfig.xml]
解决方法,将事务的jar配置到classpath下: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>3.2.5.RELEASE</version> </dependency>
5. http://www./schema/mvc 下面是spring的mvc名称空间 <beans xmlns="http://www./schema/beans" xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:tx="http://www./schema/mvc" xsi:schemaLocation=" http://www./schema/beans http://www./schema/beans/spring-beans-3.2.xsd http://www./schema/mvc http://www./schema/mvc/spring-mvc-3.2.xsd"> </beans> 导致以下异常: org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
Configuration problem:
Unable to locate Spring NamespaceHandler for XML schema namespace
[http://www./schema/mvc]
Offending resource: class path resource [webConfig.xml]
遇到这种异常,是因为没有将spring的mvc的jar配置在classpath中: <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.2.5.RELEASE</version> </dependency>
6.结论 最后,如果你是使用Eclipse来管理web服务器和部署,确保部署的组装部分项目是配置正确的 —— 即Maven的依赖,实际上是在部署时包含在类classpath中。
|
|