2017-08-08 125 views
3

这可以在Apache Camel路由中使用Spring Boot属性吗? @Value工作正常,但可以直接放置表达式的持有者。Apache Camel路由中的Spring Boot属性用法

更新:我知道PropertiesComponent,但除了我不喜欢的Applicaiton.yml之外,它将是一个更多的配置。

application.yml

sftp: 
    host:  10.10.128.128 
    user:  ftpuser1 
    password: ftpuser1password 
    path:  /tmp/inputfile/test1 

春季启动Apache的骆驼路线:

@Value("${sftp.user}") 
    private String sftpUser; 

    @Value("${sftp.host}") 
    private String sftpHost; 

    @Value("${sftp.password}") 
    private String sftpPassword; 

    @Value("${sftp.path}") 
    private String sftpInPath; 

    from("sftp://"+sftpUser+"@"+sftpHost+sftpInPath+"?delete=true&password="+sftpPassword) 
//this is working 

    from("sftp://${sftp.user}@${sftp.host}${sftp.path}?password=${sftp.password}") 
// is this possible something like this? 
+0

你尝试这样做呢? – ByeBye

+0

是的,这是行不通的,它说空。它也不能绑定@ByeBye谢谢你的回复 – sunleo

+0

你见过这个:http://camel.apache.org/properties.html –

回答

2

而是注入所有你的属性来分隔字段,你可以注入这样的完整链接:

@Value("#{'sftp://'+'${sftp.user}'+'@'+'${sftp.host}'+'${sftp.path}'+'?delete=true&password='+'${sftp.password}'}") 
private String fullLink; 

然后,您可以在from方法中使用它。

+0

感谢您的回复,这很有帮助。 – sunleo

1

没有在本地尝试过,但可以尝试使用this,在骆驼上下文中添加此属性组件(也许你需要重写骆驼上下文配置)。然后你可以在from部件中使用{{file.uri}}。

PropertiesComponent pc = new PropertiesComponent(); 
pc.setLocation("classpath:com/mycompany/myprop.properties"); 
context.addComponent("properties", pc); 
+0

感谢您的回复,因为我们有单点联系的application.properties,这个(PropertiesComponent)将是应用程序的开销。 – sunleo

+0

对不起,你为什么不指向spring引导创建的application.properties? –

+0

这是个好主意,直​​到我不知道是否会支持.yml或只有properties.Thanks我会检查这一点。 – sunleo