用于从数据库读取属性的apache commons配置的替代方法

时间:2013-03-11 08:40:21

标签: java properties datasource apache-commons

我刚刚发现apache commons配置可以从DataSource读取属性,但它不会缓存它们。我的应用程序需要多次读取属性,并且每次访问数据库都会变慢。

我有一个camel应用程序,它将所有消息发送到以我的自定义bean结尾的路由。 这个bean是用范围原型创建的(我相信OOP ...),他们将需要读取一些属性和一个数据源(从属性url / name / etc读取),这些属性取决于来自sql db的当前用户。我收到的每条消息都会创建一个bean,因此重新读取属性。 不幸的是,我不能自由选择从哪里读取属性,因为现在还有另一个不是我编写的软件(GUI),它是写入db的用户/属性管理器。所以我需要从中读取属性。

你能建议我另类吗?

谢谢, 马里奥

1 个答案:

答案 0 :(得分:6)

您可以使用Netflix Archaius项目,该项目会添加您要查找的缓存行为以及动态刷新功能。 Archaius是围绕Commons Configuration构建的。

因此,您可以使用Archaius的DynamicConfiguration,而不是子类化DatabaseConfiguration,它扩展了Commons的AbstractConfiguration。此类将缓存您想要的任何源,并使用其轮询调度类以您指定的间隔刷新属性。

您必须实现的唯一类是PolledConfigurationSource,它从数据库中提取数据并将其放在Map中。应该很简单。

https://github.com/Netflix/archaius/wiki/Users-Guide