【发布时间】:2016-05-04 03:22:06
【问题描述】:
我有一个 spring 批处理应用程序,它从文件中读取,进行一些处理,最后编写自定义输出。这一切都发生在一个步骤中。在下一步中,我有一个将输入文件存档的 tasklet(移动到另一个文件夹)。这个应用程序工作正常。但是,现在我需要在远程服务器上 sftp 输出文件,在那里它们将进一步处理。我得到了一种使用 spring 集成的 sftp 方法,其中我创建了一个输入通道,该通道提供给 outboundchannel 适配器。我将我的文件作为有效负载放入消息中并将消息发送到通道。我在这里看到的唯一问题是,每次我必须获取上下文时,我都需要加载 spring 配置文件,这似乎是完成任务的一种骇人听闻的方式。有谁知道将 SI 与 SB 集成的任何方法。
如果您想查看我的配置,请告诉我... 提前致谢!!
无需再次加载 spring 配置即可访问相同应用上下文的代码
public class AppContextProvider implements ApplicationContextAware{
private static ApplicationContext ctx;
public ApplicationContext getApplicationContext() {
return ctx;
}
public void setApplicationContext(ApplicationContext appContext) throws BeansException {
ctx = appContext;
}
}
将输出文件推送到 sftp 服务器的代码
log.info("Starting transfer of outputFile : " + absoluteOutputFileName);
final File file = new File(absoluteOutputFileName);
final Message<File> message = MessageBuilder.withPayload(file).build();
AppContextProvider context = new AppContextProvider();
final MessageChannel inputChannel = context.getApplicationContext().getBean("toChannel",MessageChannel.class);
inputChannel.send(message);
log.info("transfer complete for : " + absoluteOutputFileName);
【问题讨论】:
标签: spring spring-integration spring-batch