如何替换 SpEL 表达式中的字符串?
how to replace string in SpEL expression?
首先感谢关注
我在我的 spring 集成项目中定义了 ftp 适配器,并使用 mv
命令在 ftp 服务器中移动文件,目录结构是:
ftp-root
----------目录 1\
------------------在\
--------------------------file.in
------------------出\
我想移动 ftp-root\Directory1\in\
目录中的文件 file.in
以移动 ftp-root\Directory1\out\
扩展名 .out.rpt
ftp-root\Directory1\out\a.out
我在 ftp 服务器上使用 int-ftp:outbound-gateway
适配器到 运行 mv
命令,我的代码是:
<int-ftp:outbound-gateway id="gatewayMv"
session-factory="ftpSessionFactory"
expression="payload.remoteDirectory + '/' + payload.filename"
request-channel="mvChannel"
command="mv"
rename-expression="payload.remoteDirectory + '/' + payload.filename "
reply-channel="aggregateResultsChannel"/>
如何使用 SpEL 表达式将重命名表达式选项中的 in
替换为 out
?
rename-expression="payload.remoteDirectory + '/' + payload.filename.replaceFirst('in', 'out')"
在大多数情况下,SpEL 的工作方式与常规 Java 相同。由于 filename
是一个 String
你可以为它申请任何字符串操作。
感谢@Artem Bilan 和@Gary 的回答
使用字符串的另一种方法
定义一个 bean 如下:
public class StringUtil {
public String replacement(String value,String var1,String var2) {
return value.replace(var1,var2);
}
}
并在表达式选项中设置为:
rename-expression="@stringUtil.replacement(payload.remoteDirectory + '/' + payload.filename,'in','out')"
首先感谢关注
我在我的 spring 集成项目中定义了 ftp 适配器,并使用 mv
命令在 ftp 服务器中移动文件,目录结构是:
ftp-root
----------目录 1\
------------------在\
--------------------------file.in
------------------出\
我想移动 ftp-root\Directory1\in\
目录中的文件 file.in
以移动 ftp-root\Directory1\out\
扩展名 .out.rpt
ftp-root\Directory1\out\a.out
我在 ftp 服务器上使用 int-ftp:outbound-gateway
适配器到 运行 mv
命令,我的代码是:
<int-ftp:outbound-gateway id="gatewayMv"
session-factory="ftpSessionFactory"
expression="payload.remoteDirectory + '/' + payload.filename"
request-channel="mvChannel"
command="mv"
rename-expression="payload.remoteDirectory + '/' + payload.filename "
reply-channel="aggregateResultsChannel"/>
如何使用 SpEL 表达式将重命名表达式选项中的 in
替换为 out
?
rename-expression="payload.remoteDirectory + '/' + payload.filename.replaceFirst('in', 'out')"
在大多数情况下,SpEL 的工作方式与常规 Java 相同。由于 filename
是一个 String
你可以为它申请任何字符串操作。
感谢@Artem Bilan 和@Gary 的回答
使用字符串的另一种方法
定义一个 bean 如下:
public class StringUtil {
public String replacement(String value,String var1,String var2) {
return value.replace(var1,var2);
}
}
并在表达式选项中设置为:
rename-expression="@stringUtil.replacement(payload.remoteDirectory + '/' + payload.filename,'in','out')"