Проблема в том, что в каждом случае у вас есть два элемента XML - элемент типа
<xsd:element ref="ref"/>
и атрибут типа
<xsd:attribute name="ref" type="xsd:string"/>
в одном сложном типе.По умолчанию они оба сопоставляются со свойствами с именем Ref
.Но поскольку эти два XML-элемента - разные вещи, JAXB жалуется на конфликт имен.
Решение, как правило, довольно простое (и фактически предлагается в журнале ошибок).Настройте одно из свойств, используя привязку jaxb:property
.Нечто подобное:
<jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jaxb:bindings
schemaLocation="spring-beans.xsd"
node="/xs:schema">
<jaxb:bindings node="xs:element[@name='constructor-arg']/xs:complexType/xs:attribute[@name='ref']">
<jaxb:property name="aRef"/>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>