java - 用于从数据库读取属性的 apache 公共(public)配置的替代方案

标签 java properties datasource apache-commons-config

我刚刚发现 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 中。应该很简单。

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

关于java - 用于从数据库读取属性的 apache 公共(public)配置的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15334231/

相关文章:

C++:将基于宏的属性系统转换为使用模板

c# - 带有 SQL Server 连接字符串的数据源属性

java - spring - 如何 Autowiring 数据源?

java - Junit 试图确认返回 Null

java - 无法在 Mac OS X 上通过套接字进行通信

java - 将 Windows 预期批处理转换为 OSX 批处理

java - 如何在 Jython 中安装各种 Python 库?

c++ - 我怎样才能从文件中提取文件属性/元数据/注释

winforms - .NET将自定义属性添加到Winform控件

java - 如何使用 Glassfish 和 DataSource 访问 SQL 数据库