Я планирую использовать распределенный кеш в своем веб-приложении с балансировкой нагрузки. Итак, я попытаюсь абстрагироваться от общих функций между apache ehcache и memcached.
Моя цель - иметь возможность сделать простой переключатель конфигурации для выбора используемого решения для кэширования. Должен ли я пойти по маршруту SPI, например. например, как подключены парсеры XML?




После исправления интерфейса это действительно проблема создания шаблона. Внедрение зависимостей - мой любимый вариант, если стратегия выбора кеша является динамической, вы можете использовать фабрики компонентов Spring для принятия решения во время выполнения. Spring поддерживает области «сеанса» в веб-приложениях, что означает, что вы можете позволить фабрике решать для каждого сеанса, если хотите.
В противном случае простой локатор сервисов также должен помочь.
С макушки ...
Я считаю, что это все, что вам нужно структурно, чтобы заставить его работать надежно и чтобы вы могли расширять его, когда захотите.
Spring также имеет модуль поставщика кеша, который делает именно то, что вы хотите. Я просто не уверен, поддерживается ли memcached. Даже если нет, написать адаптер для него может быть меньше работы, чем вручную накрутить собственный интерфейс. См. https://springmodules.dev.java.net/docs/reference/0.8/html_single/#cache