我刚刚发现 Apache commons-configuration 可以从 DataSource 读取属性,但它不会缓存它们。我的应用程序需要多次读取属性,每次访问数据库都很慢。
我有一个 Camel 应用程序,它将所有消息发送到以我的自定义 bean 结尾的路由。这些 bean 是使用作用域原型(prototype)创建的(我相信 OOP),它们将/需要读取一些属性和数据源(从属性 url/name/etc 读取),这些数据源依赖于来自 SQL 数据库的当前用户。我收到的每条消息都会创建一个 bean,因此会重新读取属性。 不幸的是,我不能自由选择从哪里读取属性,因为现在有另一个软件 (GUI) 不是我写的,它是一个写入数据库的用户/属性管理器。所以我需要从中读取属性。
你能给我推荐一个替代方案吗?
最佳答案
您可以使用 Netflix Archaius 项目,它添加了您正在寻找的缓存行为以及动态刷新功能。 Archaius 是围绕 Commons 配置构建的。
因此,与其继承 DatabaseConfiguration,不如使用 Archaius 的 DynamicConfiguration,它扩展了 Commons 的 AbstractConfiguration。此类将缓存您想要的任何源,并以您使用其轮询调度类指定的时间间隔刷新属性。
您唯一需要实现的类是 PolledConfigurationSource,它从数据库中提取数据并将其放置在 Map 中。应该很简单。
关于java - 用于从数据库读取属性的 apache 公共(public)配置的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15334231/