У меня есть класс Animal и расширение Animal под названием AnimalExtension.
public class Animal
public class AnimalExtension extends Animal
Единственное различие между этими двумя классами состоит в том, что AnimalExtension имеет другую переменную экземпляра под названием animalId. У Animal нет этой переменной экземпляра.
У меня также есть собственный тип данных, который я хочу упорядочить и деамаршалировать в XML. Этот тип данных называется AnimalList. внутри AnimalList есть список животных в качестве переменной экземпляра.
@XmlType(name = "AnimalList")
public class AnimalList{
private List<Animal> animalList;
....
animalList может содержать как Animal, так и AnimalExtension. Однако в XML я не хочу, чтобы элемент назывался AnimalExtension; Я хочу, чтобы у всех них было имя элемента Animal. Я хочу, чтобы дополнительный атрибут отображался только тогда, когда JAXB знает, что Animal на самом деле является экземпляром AnimalExtension. Итак, если у меня есть список, который выглядит как
List<Animal> animalList = new LinkedList<Animal>();
AnimalExtension animalExtension = new AnimalExtension();
animalExtension.setAnimalId(1);
amimalExtension.setName("Don");
Animal animal = new Animal();
animal.setName("Mike");
animalList.add(animalExtension);
animalList.add(animal);
, я хочу, чтобы XML выглядел как
<AnimalList>
<Animal name="Don" id="1" />
<Animal name="Mike" />
</AnimalList>
Это то, что я пытался сделать
@XmlElements(
{
@XmlElement(name = "Animal", type = Animal.class),
@XmlElement(name = "Animal", type = AnimalExtension.class)
}
)
public List<Animal> getEntries() {
return animalList;
}
Код компилируется, но когда я пытаюсь запустить свой сервер. Это дает мне эту странную ошибку, которая не имеет отношения к тому, что происходит (BeanCreationException). Я попытался сделать имя XmlElement различным для каждого типа, и это работает, но задача состоит в том, чтобы сделать имя одинаковым.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'encryptionPayloadContentProvider'