2011-08-04 10 views
5

Estoy tratando de escribir una aplicación Spring AOP simple, pero tengo un problema con la configuración xml.Spring xml problem

Mi 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:aop="http://www.springframework.org/schema/aop" 
    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"> 

<bean id="audience" class="springaop.Audience"> 
</bean> 

<bean id="sam" class="springaop.Singer"> 
    <property name="id" value="1"></property> 
</bean> 

<aop:config> 
    <aop:aspect ref="audience"> 

     <aop:before pointcut="* springaop.Singer.perform(..)" 
     method="takeSeats"></aop:before> 

    </aop:aspect> 
</aop:config> 

</beans> 

me sale esta advertencia y excepción:

 
WARNING: Ignored XML validation warning 
    org.xml.sax.SAXParseException: SchemaLocation: schemaLocation value = 'http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop' must have even number of URI's. 

Exception: Line 18 in XML document from class path resource [aop-conf.xml] is invalid; 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 'aop:config'. 

Además, no puedo entender las xmlns

Respuesta

16

Cambiar la declaración <beans en la parte superior del XML para tener este aspecto:

<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" 
    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"> 

No eres más que la adición de este "http: //www.springframework.org/schema/aop/spring-aop-3.0.xsd ". El atributo xsi:schemaLocation es solo un grupo de pares. El primero de cada par es un URI de esquema, el segundo es el URL donde se puede encontrar el esquema. Puedes pensarlo como un mapa: clave, luego valor.

6

El atributo xsi:schemaLocation debe tener un número par de URIs. Cada par asocia un URI de espacio de nombres con la ubicación del XSD. Su xsi:schemaLocation contiene tres URI, por lo que no es válido. Esto es lo que el mensaje te está diciendo.

es necesario proporcionar la ubicación del XSD para http://www.springframework.org/schema/aop