Spring boot 远程目录表达式字符串
在我的项目中,我使用Spring集成Sftp。我尝试用spEL配置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
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'])代码>