将其标记为重复之前的请求。我浏览了论坛,在任何地方都找不到问题的解决方案。
我正在使用 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 上下文时,它会抛出一个错误,说它需要一个类型的 beanJaxb2Marshaller
并得到五个。
注意使用 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;
}
}