Spring integration Spring集成-重用组件

Spring integration Spring集成-重用组件,spring-integration,Spring Integration,在Spring集成中有没有重用@Transformer或任何其他组件的方法 我有下面这样的变压器,我想在同一个流程中使用多次。我觉得我们不能这样做,因为这是与渠道捆绑。这是正确的吗 @Transformer(inputChannel = "fileInputChannel" , outputChannel = "mappingChannel") public List<Map<String, String>> readFile(SLFile slfile){ l

在Spring集成中有没有重用@Transformer或任何其他组件的方法

我有下面这样的变压器,我想在同一个流程中使用多次。我觉得我们不能这样做,因为这是与渠道捆绑。这是正确的吗

@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;
}
变压器(inputChannel=“fileInputChannel”,outputChannel=“mappingChannel”) 公共列表读取文件(SLFile SLFile){ log.info(“文件读取器:+slfile.getPath()+slfile.getFileName()); List dataList=new ArrayList(); CSVFormat CSVFormat=CSVFormat.DEFAULT.withHeader(); File File=新文件(slfile.getPath()+slfile.getFileName()); try(CSVParser parser=newcsvparser(newfilereader(file),csvFormat)){ parser.getRecords().stream().map(e->dataList.add(e.toMap()).collect(Collectors.toList()); 日志信息(数据列表); }捕获(IOE异常){ log.error(“文件读取错误:+e”); } 返回数据列表; }
没有这种配置风格

使用XML配置,您可以从多个位置引用相同的
@Transform
方法(因为通道是在XML中定义的,而不是在注释中定义的)

仅使用注释样式配置,就必须执行以下操作

@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);
}
变压器(inputChannel=“fileInputChannel1”,outputChannel=“mappingChannel1”) 公共列表读取文件1(SLFile SLFile){ 返回readFile(slfile); } ... @转换器(inputChannel=“fileInputChannelN”,outputChannel=“mappingChannelN”) 公共列表读取文件n(SLFile SLFile){ 返回readFile(slfile); }
我们目前不允许在一个方法上有多个
@Transformer
注释。

明白了。非常感谢。
...
.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);
}