Я использую FtpOutBoundGateway для перемещения одного файла в другое удаленное место. Согласно весенней документации атрибут выражения используется для предоставления пути «от», а выражение переименования используется для пути «до». Я предоставляю статический путь, и он работает нормально, мой вопрос в том, как предоставить динамическое имя для выражения переименования?
вот мой код
@Bean
@ServiceActivator(inputChannel = "ftpChannel")
public MessageHandler handler() {
FtpOutboundGateway ftpOutboundGateway =
new FtpOutboundGateway(sf(), "mv", "payload");
ftpOutboundGateway.setRenameExpressionString("/processed/StaticFilename.xml");
ftpOutboundGateway.setOutputChannelName("results");
return ftpOutboundGateway;
}
Вот интерфейс шлюза обмена сообщениями:
@MessagingGateway
public interface Gate {
@Gateway(requestChannel = "ftpChannel")
void sendToFtp(String filePath, @Header("filename") String filename);
}
Есть ли способ динамически установить ExpressionString?




В сообщении «полезная нагрузка» указано имя перемещаемого файла. Итак, это работает.
ftpOutboundGateway.setRenameExpressionString("'/processed/'+ payload");
Если вы хотите указать имя, другое имя, исходное имя, чем можно передать значение в заголовках и использовать его здесь.