Подобно этой теме, но не совсем: How To Cache Information In A Threadsafe MannerСправочные данные
Что такое обычный шаблон для работы с «эталонными данными» - данные, которые часто считывают с помощью приложения, как правило, экстернализированы в базе данных или файла свойств , но обновляется очень редко (дни, недели, месяцы)? Когда данные будут обновлены, они будут обновляться извне.
Будет ли это обычным ядром, которым я мог бы вводить DAO и, таким образом, мог бы управлять своим содержимым? Мне нравится идея разоблачить метод refresh() на этой службе, который заставит обновление (т. Е. Через MBean), поэтому мне не придется отказываться от приложения).
Из другой нити SO, похоже, что люди могут просто создавать DAO при необходимости и кэшировать прозрачно на этом уровне.
Я вроде как идея однопользовательской службы, которой вводит либо реальный DAO, который загружает данные из базы данных, либо макет/тестовый двойной, который возвращает жесткий код. Однако, если бы я должен был реализовать сервис как singleton через java enum, это заставляет его подключаться через Spring немного более проблематично.
Итак, как другие люди обычно имеют дело с справочными данными? Запрос по желанию, но с кешированием под обложками? Или отдельная служба в памяти?
Возможно, я содрогнулся с этой частью. В основном, мне интересно, как вводить зависимости в одиночные. Теперь, когда я думаю об этом, это может быть отдельный вопрос. В любом случае, согласно Блоху, в настоящее время лучшая практика реализации синглетонов в java - с Enums с одним членом (экземпляром): т. Е. Public enum Elvis { INSTANCE; } – ayang
Если вы должны были спуститься по этому маршруту, не могли бы вы все равно вводить любые зависимости через Spring с помощью метода MethodInvokingFactoryBean, чтобы вызвать соответствующий сеттер в классе enum? – Adamski
Да, и это то, что я, скорее всего, в конечном итоге сделаю - но это было недостаточно сложно, и я подумал, что вернусь к первым принципам и посмотрю, не сделаю ли я это неправильно. – ayang