Spring boot 远程目录表达式字符串

Spring boot 远程目录表达式字符串,spring-boot,spring-integration,spring-el,Spring Boot,Spring Integration,Spring El,在我的项目中,我使用Spring集成Sftp。我尝试用spEL配置remoteDirectoryExpression,但主要问题是,我在应用程序属性中将SFTP文件夹值存储为SFTP.folder=/test/ handler.setRemoteDirectoryExpressionString("\'" + properties.getFolder() + "\'" + ".concat(headers['region'])"); properties.getFolder()是一个具有@Co

在我的项目中,我使用Spring集成Sftp。我尝试用spEL配置
remoteDirectoryExpression
,但主要问题是,我在应用程序属性中将SFTP文件夹值存储为
SFTP.folder=/test/

handler.setRemoteDirectoryExpressionString("\'" + properties.getFolder() + "\'" + ".concat(headers['region'])");
properties.getFolder()
是一个具有
@ConfigurationProperties
的类

这个解决方案很好,但我不喜欢。那么,有没有可能不用我的大括号来写spEl表达式

但无法使用${}之类的表达式从application.properties获取属性

没错:在这个setter级别上不能这样做,因为没有属性占位符知识,因为它已经是一个普通的Java调用

您可以通过方法参数上的
@Configuration
类的属性上的
@Value
注释或通过
@Bean
方法参数执行所需操作:

@Bean
FtpMessageHandler ftpMessageHandler(@Value("'${sftp.folder}' + headers['region']") String remoteDirectory)

你说我的花括号是什么意思?这样一个强类型的解决方案到底有什么问题?@ArtemBilan,实际上一切都好,但我不喜欢这个
“\'”+properties.getFolder()+“\'”
。希望使用单spEl表达式执行此操作,但无法从application.properties获取属性使用${}之类的表达式不需要在双引号中转义单引号<代码>“'”+properties.getFolder()+”“+”.concat(headers['region'])”。您还可以在属性值中加上单引号,然后
properties.getQuotedFolder()+”.concat(headers['region'])