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