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