java - manager - spring-beans.xsd no define "local". ¿Por qué?
spring security order (5)
Como se indica aquí: http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/
El atributo local en el elemento ref ya no se admite en los beans xsd 4.0, ya que ya no proporciona valor sobre una referencia de bean regular. Simplemente cambie las referencias locales de referencia existentes para ref bean cuando actualice al esquema 4.0.
Como sabrá, Spring 3.x no es totalmente compatible con Java 8, por lo que puede usar Java 7 sin soporte y obsoleto con Spring 3.x, o actualizar Spring y JDK. Recomiendo encarecidamente la última
Casi todos los proyectos de primavera usan spring-beans.xsd (se refiere a él para ser más precisos). Sin embargo, si observa el archivo, http://www.springframework.org/schema/beans/spring-beans.xsd , verá que es la versión 3.2 y no tiene una definición para el atributo "local ".
Lo que es aún más interesante, es que http://www.springframework.org/schema/beans/spring-beans-3.2.xsd realmente define "local".
Además, dado que el archivo se extrae del archivo (org / springframework / beans / factory / xml / spring-beans-3.2.xsd) debido a spring.schema, no creo que ningún proyecto tenga problemas de compilación o de tiempo de ejecución.
El validador xml de Eclipse, por otro lado, creo que solo usa el enlace de Internet y muestra un error xml, más específicamente:
"cvc-complex-type.3.2.2: el atributo ''local'' no puede aparecer en el elemento ''ref''"
¿Esto es un error?
Edición: según solicitud, este es mi encabezado de primavera:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:oxm="http://www.springframework.org/schema/oxm" xmlns:batch="http://www.springframework.org/schema/batch"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
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 http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd">
Edición 2: aquí es donde estoy usando local
<bean id="bar"
class="org.springframework.batch.item.support.CompositeItemWriter">
<property name="delegates">
<list>
<ref local="foo" />
</list>
</property>
</bean>
<bean id="foo" class="java.lang.String" />
Debe intentar utilizar <ref bean="someBean"/>
lugar.
El http://www.springframework.org/schema/beans/spring-beans.xsd realidad apunta al 4.0 XSD, que NO tiene local . Además, hay errores en eclipse con la integración de Spring que podría ser el problema. INT-1353
Además, existe / was / una opción de configuración para que Eclipse especifique la carga de XSD desde Classpath, pero no estoy 100% seguro de que esto funcione o que ya exista. Hay una captura de pantalla de eso aquí: https://.com/a/2896051/1958771
~ sheenobu -> curl -s http://www.springframework.org/schema/beans/spring-beans.xsd | md5
0483a5565138fe9f79c5fbe38c7c5969
~ sheenobu -> curl -s http://www.springframework.org/schema/beans/spring-beans-3.2.xsd | md5
1562baeab9550e2149e9608dbb3bbadd
~ sheenobu -> curl -s http://www.springframework.org/schema/beans/spring-beans-4.0.xsd | md5
0483a5565138fe9f79c5fbe38c7c5969
He resuelto el problema con el uso de http://www.springframework.org/schema/beans/spring-beans-3.2.xsd anterior en xsi: schemaLocation. (Como mi proyecto es "antiguo" también)
Spring (y Eclipse) utilizará cualquier xsd
que haya declarado en schemaLocation
independientemente de la que schemaLocation
en el archivo jar
. Esta es en realidad la validación realizada por el analizador XML que Spring utiliza debajo de todo.
Si desea utilizar el atributo local
de ref
, deberá declarar una schemaLocation
que apunte a un esquema que tenga el atributo local
. Tenga en cuenta que si lo hace, el contexto generado deberá ser analizable por el BeanDefinitionParser
que existe en su jar
Spring.