现在,我使用Spring引导Camel。使用Spring,我可以将我的Camel上下文指向各自的属性文件,然后在引导时注入。我的问题是我现在想要将我的属性从文件移动到数据库,但仍然能够像以前一样使用属性占位符。这样做的最佳方式是什么?
我注意到我可以实现一个PropertiesResolver
接口,但我不知道如何告诉Camel我的实现。 Camel的文档在这方面非常缺乏。
我也不反对让Spring为我从数据库中获取属性,虽然我没有看到这种情况发生。
答案 0 :(得分:0)
PropertiesResolver旨在帮助Camel从OSGi包或普通类路径中找到属性文件。
如果您要设置所有者 PropertiesResolver ,可以尝试使用 org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer 。
您可以在那里注入 PropertiesResolver 的客户实施。
答案 1 :(得分:0)
我以为我会用我发现的工作来更新这个。这可能不是最好的方法,但它可以工作,我不必修改Camel源代码。基本上,我将所有类都从继承自RouteBuilder转换为继承自GJKRouteBuilder(继承自RouteBuilder)。然后在那里,我这样做了:
public class GJKRouteBuilder extends RouteBuilder {
@Override
protected void checkInitialized() throws Exception {
//Get properties from CamelContext using getContext()
//Lookup properties from DB based on CamelContext
//Get the properties component from the context (or create one)
//call setOverrideProperties() on properties component
super.checkInitialized();
}
}
同样,可能不是最好的方法,但它有效。现在,任何从GJKRouteBuilder继承并具有通过Spring连接的正确值的路由都会将属性注入到属性组件中,就好像它们来自属性文件一样。