Spring EL File.renameTo 无法处理挂载的目录

Spring EL File.renameTo is not working on mounted directories

我让这个 bean 在 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);
}

T(java.nio.file.Files).move(<oldPath>, <newPath>)

您可以使用 T(java.io.File).toPath()File 转换为 Path