将spring spring从1.5.12迁移到1.5.13后,ehcache发出错误

时间:2018-06-05 03:44:37

标签: spring-boot spring-cache

我配置了spring boot 1.5.12 + ehcache,一切正常,直到我将spring boot升级到1.5.13

spring: cache: jcache: provider: org.ehcache.jsr107.EhcacheCachingProvider config: ehcache.xml 包含以下条目

ehcache.xml

我的resources位于Caused by: java.lang.IllegalArgumentException: Cache configuration does not exist 'ServletContext resource [/ehcache.xml]' at org.springframework.util.Assert.isTrue(Assert.java:92) at org.springframework.boot.autoconfigure.cache.CacheProperties.resolveConfigLocation(CacheProperties.java:117) at org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration.createCacheManager(JCacheCacheConfiguration.java:113) at org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration.jCacheCacheManager(JCacheCacheConfiguration.java:97) at org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration$$EnhancerBySpringCGLIB$$e5c3a047.CGLIB$jCacheCacheManager$1(<generated>) at org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration$$EnhancerBySpringCGLIB$$e5c3a047$$FastClassBySpringCGLIB$$a6ae7187.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358) at org.springframework.boot.autoconfigure.cache.JCacheCacheConfiguration$$EnhancerBySpringCGLIB$$e5c3a047.jCacheCacheManager(<generated>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ... 47 common frames omitted 目录

我收到的错误是:

ehcache.xml

看起来spring boot已经开始使用servletContext解析器搜索partitionBy

P.S。除了弹簧启动升级到1.5.13

之外,我没有对任何源代码进行任何更改

我在这里错过了一些必要的配置吗?

1 个答案:

答案 0 :(得分:4)

我已经找到解决此问题的方法。我们需要使用文件名指定前缀classpath:才能使其正常工作。

我的application.yml现在看起来像这样

spring:
   cache:
     jcache:
        provider: org.ehcache.jsr107.EhcacheCachingProvider
        config: classpath:ehcache.xml

希望有帮助。