Using ehcache 3 with Spring Annotations (not using

2019-02-12 06:28发布

问题:

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.

回答1:

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



回答2:

This is simple and working sample for all needed changes from ehcache 2 to 3: https://imhoratiu.wordpress.com/2017/01/26/spring-4-with-ehcache-3-how-to/

This this is link for new configuration:

  • http://www.ehcache.org/documentation/3.4/xml.html
  • http://www.ehcache.org/documentation/3.1/107.html#supplement-jsr-107-configurations