Этот бин отлично работает на linux и windows, но не перемещает файлы, когда источник находится в смонтированной файловой системе (например, на сетевом диске). Я знаю, что File.renameTo не способен сделать такой ход, вместо этого следует выполнить копирование и удаление, но как это сделать в SpelExpression? Я также попытался зарегистрировать пользовательский метод, но он не работал. Есть предложения?
@Bean
TransactionSynchronizationFactory transactionSynchronizationFactory() {
ExpressionParser parser = new SpelExpressionParser();
ExpressionEvaluatingTransactionSynchronizationProcessor syncProcessor = new ExpressionEvaluatingTransactionSynchronizationProcessor();
syncProcessor.setBeanFactory(applicationContext.getAutowireCapableBeanFactory());
syncProcessor.setAfterCommitExpression(parser.parseExpression(
"payload.renameTo(new java.io.File(@inboundProcessedDirectory.path " +
" + T(java.io.File).separator + payload.name))"));
syncProcessor.setAfterRollbackExpression(parser.parseExpression(
"payload.renameTo(new java.io.File(@inboundFailedDirectory.path " +
" + T(java.io.File).separator + payload.name))"));
return new DefaultTransactionSynchronizationFactory(syncProcessor);
}