Альтернатива конфигурации apache commons для чтения свойств из базы данных

Я только что обнаружил, что конфигурация apache commons может считывать свойства из DataSource, но не кэширует их. Моему приложению нужно много раз считывать свойства, и каждый раз он замедляет доступ к базе данных.

У меня есть верблюжье приложение, которое отправляет все сообщения на маршруты, которые заканчиваются моими пользовательскими компонентами. Эти bean-компоненты созданы с прототипом области (я верю в ООП...), и им нужно/нужно будет прочитать некоторые свойства и источник данных (который считывается из свойств url/name/etc), который зависит от текущего пользователя из sql db. Каждое сообщение, которое я получаю, создает bean-компонент, поэтому свойства перечитываются. К сожалению, я не свободен выбирать, откуда читать свойства, потому что теперь есть другое программное обеспечение (графический интерфейс), написанное не мной, которое является менеджером пользователей/свойств, который записывает в БД. Поэтому мне нужно прочитать свойства из него.

Можете ли вы предложить мне альтернативу?

Спасибо, Марио


person mgiammarco    schedule 11.03.2013    source источник
comment
Каков вариант использования? Как часто вы читаете данные, как часто они изменяются, где они изначально хранятся?   -  person    schedule 11.03.2013
comment
Не могли бы вы просто реализовать простой кеш? Вы ссылаетесь на последний комментарий по этому вопросу. issues.apache.org/jira/browse/   -  person longhua    schedule 11.03.2013
comment
Ссылка, которую вы предоставили, к сожалению, является патчем для общих ресурсов, который я не хочу применять. Теперь я хотел бы спросить, могу ли я подклассифицировать DatabaseConfiguration (я предполагаю, что это должно быть возможно)   -  person mgiammarco    schedule 11.03.2013


Ответы (1)


Вы можете использовать проект Netflix Archaius, который добавляет искомое поведение кэширования, а также возможности динамического обновления. Archaius построен на базе Commons Configuration.

Таким образом, вместо подкласса DatabaseConfiguration вы можете использовать DynamicConfiguration от Archaius, который расширяет AbstractConfiguration от Commons. Этот класс будет кэшировать любой источник, который вам нужен, и обновлять свойства с интервалом, который вы укажете, используя свой класс планирования опроса.

Единственный класс, который вам нужно реализовать, — это PolledConfigurationSource, который извлекает данные из базы данных и помещает их на карту. Должно быть довольно просто.

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

person cuttcards    schedule 24.03.2013
comment
этот ответ все еще актуален? или есть другие лучшие альтернативы? - person ateebahmed; 26.03.2020