8

我刚刚发现 Apache commons-configuration 可以从 DataSource 读取属性,但它不会缓存它们。我的应用程序需要多次读取属性,每次访问数据库都很慢。

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

你能给我一个替代方案吗?

4

1 回答 1

7

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

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

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

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

于 2013-03-24T14:26:35.713 回答