Using ehcache 3 with Spring Annotations (not using Spring Boot)

Håvard Geithus picture Håvard Geithus · Sep 8, 2016 · Viewed 9.1k times · Source

I'm trying to get Ehcache 3 working with Spring 4 without using Spring boot.

Here is a working example out there which uses Spring Boot, but I'm working on an existing application which is not using Spring Boot.

The problem is that spring-context-support (which adds Spring's cache annotations) expects the Ehcache's CacheManager to be on this classpath: net.sf.ehcache.CacheManager

However, in Ehcache 3, the CacheManager class resides on another classpath: org.ehcache.CacheManager.

So, basically spring-context-support does not support Ehcache 3. And you would have to use the JSR-107 annotations directly, not the annotations provided by Spring.

But apparently it works with Spring Boot. Perhaps there is a way to make it work with a standard Spring Application as well. That's what I'm hoping. I really want to be using Spring's own annotations instead of the JSR-107 annotations.

Answer

Louis Jacomet picture Louis Jacomet · Sep 9, 2016

Indeed there is no native support of Ehcache 3 in Spring Caching.

The good news is that you achieve what you want with the JCache support that Spring Caching has since Ehcache 3 is a compliant JCache implementation. And once you have a JCache CacheManager available in your application context, nothing forces you to use the JCache annotations. You can keep using the Spring Caching ones without any problem.

You can find a demo of that here.

Note: I am working on Ehcache