重複としてマークする前のリクエスト。フォーラムを調べましたが、どこにも問題の解決策が見つかりませんでした。
私はSpring 3.2を使用してコードを書いていますが、すべてが純粋に注釈ベースです。コードは、さまざまな XSD ファイルから派生した XML ファイルを受け取ります。
つまり、5 つの異なる XSD (A1、A2、A3、A4、A5) があり、私のコードはあらゆるタイプの XML を受け取り、到着時に XML のタイプを識別するロジックを持っていると言えます。
現在、Spring OXM を使用してこれらをアンマーシャリングしようとしています。しかし、複数の XSD が関係しているため、実際には 1 つの Un-marshaller を使用することはできません。ですので、5個くらい必要です。
クラスでは、Configuration
以下のように 5 つの Bean を追加しました。
@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 の 5 つの異なるクラスがあり、1 つのアンマーシャラー Bean を 1 つのクラスに注入しようとしています。つまりA1Unmarshaller
、autowired などにC1
なります。
Spring コンテキストが構築されると、タイプの 1 つの Bean が必要でJaxb2Marshaller
、5 つ取得したというエラーがスローされます。
注: XML 構成を使用すると正常に機能したため、何か不足しているかどうかはわかりません。助けてください。
EDITクラス C1 の 1 つのコードは以下のとおりです。
@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;
}
}