Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于从数据库读取属性的apache commons配置的替代方案_Java_Properties_Datasource_Apache Commons Config - Fatal编程技术网

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

Java 用于从数据库读取属性的apache commons配置的替代方案,java,properties,datasource,apache-commons-config,Java,Properties,Datasource,Apache Commons Config,我刚刚发现ApacheCommons配置可以从数据源读取属性,但它不缓存它们。我的应用程序需要多次读取属性,每次访问数据库的速度都很慢 我有一个camel应用程序,它将所有消息发送到以自定义bean结尾的路由。 这个bean是用scope prototype(我相信OOP…)创建的,它们将/需要读取一些属性和一个数据源(从属性url/name/etc读取),该数据源依赖于sql数据库中的当前用户。我收到的每条消息都会创建一个bean,因此属性会被重新读取。 不幸的是,我不能自由选择从何处读取属性

我刚刚发现ApacheCommons配置可以从数据源读取属性,但它不缓存它们。我的应用程序需要多次读取属性,每次访问数据库的速度都很慢

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

你能给我推荐一个替代方案吗

谢谢,
Mario

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

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

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


什么是用例?您多久读取一次数据,数据多久更改一次,数据最初存储在哪里?您能实现一个简单的缓存吗?请参阅此问题的最后一条评论。你提供的链接“不幸”是一个我不想应用的commons补丁。现在我想问,我是否可以将数据库配置子类化(我认为这应该是可能的),这个答案仍然有效吗?还是有其他更好的选择?