Использование ehcache 3 с аннотациями Spring (без использования Spring Boot)

Я пытаюсь заставить Ehcache 3 работать с Spring 4 без использования Spring boot.

Вот рабочий пример, который использует Spring Boot, но я работаю над существующим приложением, которое не использует Spring Boot.

Проблема заключается в том, что Spring-context-support (который добавляет аннотации кеша Spring) ожидает, что CacheManager Ehcache будет в этом classpath: net.sf.ehcache.CacheManager

Однако в Ehcache 3 класс CacheManager находится в другом пути к классам: org.ehcache.CacheManager.

Итак, в основном Spring-context-support не поддерживает Ehcache 3. И вам придется использовать аннотации JSR-107 напрямую, а не аннотации, предоставляемые Spring.

Но, видимо, это работает с Spring Boot. Возможно, есть способ заставить его работать и со стандартным приложением Spring. Это то, на что я надеюсь. Я действительно хочу использовать собственные аннотации Spring вместо аннотаций JSR-107.

2 ответа

Решение

Действительно, в Spring Caching нет встроенной поддержки Ehcache 3.

Хорошей новостью является то, что вы достигаете того, чего хотите, с поддержкой JCache, которую имеет Spring Caching, поскольку Ehcache 3 является совместимой реализацией JCache. И как только у вас есть JCache CacheManager доступно в контексте вашего приложения, ничто не заставляет вас использовать аннотации JCache. Вы можете продолжать использовать Spring Caching без каких-либо проблем.

Вы можете найти демонстрацию этого здесь.

Примечание: я работаю над Ehcache

Это простой и рабочий пример всех необходимых изменений с ehcache 2 на 3: https://imhoratiu.wordpress.com/2017/01/26/spring-4-with-ehcache-3-how-to/

Это ссылка для новой конфигурации:

Другие вопросы по тегам