2016-09-08 7 views
9

Я пытаюсь получить Ehcache 3, работающий с Spring 4 без использования Spring boot.Использование ehcache 3 с Spring Annotations (не используя Spring Boot)

Here is a working example out there which uses Spring Boot, но я работаю над существующим приложением, которое не использует Spring Boot.

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

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

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

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

+0

Используйте правильную версию ehcahce 3, которая поддерживается. –

+0

Кто это? Благодаря! –

+1

Просто прочитайте его снова. При использовании ehcache3 вы должны использовать абстракцию jcache с Spring (вы все равно можете использовать весеннюю аннотацию, но для конфигурации вам нужно использовать фабрики jcache). Else использовать ehcache2. Моя ошибка извините. –

ответ

9

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

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

Вы можете найти демонстрацию к этому here.

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

+1

Спасибо, что разобрались, этот разговор был действительно полезен! Одна из вещей, которые я сделал неправильно в моей настройке, - это ввести мои кеши в моей конфигурации Ehcache 3. Затем, когда Spring JCacheCacheManager вызвал getCache (cacheName) в базовом CacheManager (в моем случае Eh107CacheManager), он закончил тем, что выбрал IllegalArgumentException: Cache [cacheName] указывает типы ключей/значений. Используйте getCache (String, Class, Class). –

+0

+1, я также сталкиваюсь с этой проблемой, я думаю, что это ошибка (или, возможно, не поддерживаемая функция), использующая Ehcache3.x весной, мы не можем определить свойство «key-type» и «value-type» в ehcache.xml –

+0

Возможно ли использовать Ehcache3 с Spring ACL? – Sharadr