2017-03-02 15 views
0

Spring Integrationで@Transformerやその他のコンポーネントを再利用する方法はありますか?Spring Integration - コンポーネントの再利用

私は以下のようなトランスがあり、同じフローで複数回使用したいと思います。チャンネルに縛られているので、私たちはそれができないと感じています。これは正しいです?

@Transformer(inputChannel = "fileInputChannel" , outputChannel = "mappingChannel") 
public List<Map<String, String>> readFile(SLFile slfile){ 
    log.info("File Reader : " + slfile.getPath()+ slfile.getFileName()); 

    List<Map<String, String>> dataList = new ArrayList<>(); 
    CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader(); 

    File file = new File(slfile.getPath()+ slfile.getFileName()); 

    try(CSVParser parser = new CSVParser(new FileReader(file), csvFormat)){ 
     parser.getRecords().stream().map(e -> dataList.add(e.toMap())).collect(Collectors.toList()); 
     log.info(dataList); 

    } catch (IOException e) { 
     log.error("File read Error : " + e); 
    } 

    return dataList; 
} 

答えて

0

この設定のスタイルではありません。

XML設定では、チャネルがXMLではなく注釈で定義されているため、同じ@Transformメソッドを複数の場所から参照できます。コンフィギュレーションののJava DSLスタイルで

<int:transformer ... ref="myTBean" method="readFile" /> 
... 
<int:transformer ... ref="myTBean" method="readFile" /> 

、あなたが複数の場所で変圧器を再利用することができます...だけでは注釈スタイルの構成で

... 
.transform(readFile()) 
... 
.transform(readFile()) 
... 

、あなたは

ような何かをしなければならないでしょう
@Transformer(inputChannel = "fileInputChannel1" , outputChannel =  "mappingChannel1") 
public List<Map<String, String>> readFile1(SLFile slfile){ 
    return readFile(slfile); 
} 

... 

@Transformer(inputChannel = "fileInputChannelN" , outputChannel =  "mappingChannelN") 
public List<Map<String, String>> readFileN(SLFile slfile){ 
    return readFile(slfile); 
} 

現在、複数の@Transformer注釈を1つの方法で使用することはできません。

+0

入手しました。ありがとうございました –

関連する問題