Требуется несколько бобов одного типа в Spring

Запрос, прежде чем пометить его как дубликат. Я прошел форум и нигде не смог найти решения проблемы.

Я пишу код с использованием Spring 3.2, и все чисто аннотации. Код получает файлы XML, которые получены из разных файлов XSD.

Таким образом, мы можем сказать, что существует пять различных XSD (A1, A2, A3, A4, A5), и мой код получает XML любого типа, и у меня есть логика для определения типа XML по прибытии.

Теперь я пытаюсь разархивировать их с помощью Spring OXM. Но поскольку задействовано несколько XSD, мы не можем использовать один Un-marshaller. Итак, нам нужно около пяти из них.

вConfiguration класс, я добавил пять бобов, как показано ниже:

@Bean(name="A1Unmarshaller")
public Jaxb2Marshaller A1Unmarshaller(){
    Jaxb2Marshaller unMarshaller = new Jaxb2Marshaller();
    unMarshaller.setContextPath("package name for the classes generate by XSD A1");
}

@Bean(name="A2Unmarshaller")
public Jaxb2Marshaller A1Unmarshaller(){
    Jaxb2Marshaller unMarshaller = new Jaxb2Marshaller();
    unMarshaller.setContextPath("package name for the classes generate by XSD A2");
}

@Bean(name="A3Unmarshaller")
public Jaxb2Marshaller A3Unmarshaller(){
    Jaxb2Marshaller unMarshaller = new Jaxb2Marshaller();
    unMarshaller.setContextPath("package name for the classes generate by XSD A3");
}

@Bean(name="A4Unmarshaller")
public Jaxb2Marshaller A4Unmarshaller(){
    Jaxb2Marshaller unMarshaller = new Jaxb2Marshaller();
    unMarshaller.setContextPath("package name for the classes generate by XSD A4");
}

@Bean(name="A5Unmarshaller")
public Jaxb2Marshaller A5Unmarshaller(){
    Jaxb2Marshaller unMarshaller = new Jaxb2Marshaller();
    unMarshaller.setContextPath("package name for the classes generate by XSD A5");
}

Теперь у меня есть пять разных классов C1, C2, C3, C4 и C5, и я пытаюсь внедрить один бин unmarshaller в один класс. Это значитA1Unmarshaller автоматически подключен кC1 и так далее.

Когда контекст Spring создается, он выдает ошибку, сообщающую, что ожидается один компонент типаJaxb2Marshaller и получил пять.

Запись Это работало нормально, когда было сделано с использованием конфигурации XML, поэтому я не уверен, что что-то упустил. Пожалуйста помоги.

РЕДАКТИРОВАТЬ Код для одного из классов C1 ниже:

@Component
public class C1{

@Autowired
private Jaxb2Marshaller A1Unmarshaller;
    A1 o = null

public boolean handles(String event, int eventId) {
    if (null != event&& eventId == 5) {
                A1 =  A1Unmarshaller.unMarshal(event);
        return true;
    }
    return false;
}

}

Ответы на вопрос(3)

Ваш ответ на вопрос