春季需要多种相同类型的豆子
2022-09-01 05:36:29
在将其标记为重复之前的请求。我已经浏览了论坛,在任何地方都找不到问题的解决方案。
我正在使用Spring 3.2编写代码,一切都是纯粹基于注释的。该代码接收从不同的 XSD 文件派生的 XML 文件。
因此,我们可以说,有五种不同的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 A2Unmarshaller(){
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 bean注入一个类中。这意味着是自动连接到等等。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;
}
}