次のように定義されたインターフェイスがあります。
public interface DocExporter{
public void exportDoc();
}
2 つの実装クラスを次のように定義します。
@Service(value="docExporter")
@Scope(value="BeanDefinition.SCOPE_PROTOTYPE)
public class PdfDocExporter implements DocExporter{
public void exportDoc(){
// do Pdf Export stuff
}
}
と
@Service(value="docExporter")
@Scope(value="BeanDefinition.SCOPE_PROTOTYPE)
public class ExcelDocExporter implements DocExporter{
public void exportDoc(){
// do Excel Export stuff
}
}
だから私は次のように言うことができます:
@Name("docExportReporter")
@Scope(ScopeType.EVENT)
public class DocExportReporter {
@In("#{docExporter}")
private DocExporter pdfDocExporter;
@In("#{docExporter}")
private DocExporter excelDocExporter;
@Asynchronous
public void reportGen(){
**excelDocExporter.exportDoc()** // THIS THROWS Seam Exception @In attribute requires a not null value
}
}
Spring で Seam を使用するのは初めてで、両方の impl クラスで @Service の値が "docExporter" (インターフェースの名前) になるか、それとも "pdfDocExporter" "excelDocExporter" のようになるかを知りたいです。
上記で、reportGen async メソッド内で pdfDocExporter または excelDocExporter オブジェクトを使用する場合、@In 属性には null 以外の値の例外が必要です。インターフェースの 2 つの実装を 3 番目のクラスで宣言し、Seam @Asynchronous アノテーションで正常に動作させることはできますか?