java – 禁用通过外部属性的spring方法缓存
发布时间:2020-12-14 06:06:28 所属栏目:Java 来源:网络整理
导读:我使用ehcache和注释驱动配置配置了 spring方法缓存. 但是,我希望能够从我们在应用程序中使用的配置文件中禁用它. 我的第一个想法是如果禁用方法缓存,则调用net.sf.ehcache.CacheManager.CacheManager(),不带参数.抛出异常: java.lang.IllegalArgumentExcep
我使用ehcache和注释驱动配置配置了
spring方法缓存.
但是,我希望能够从我们在应用程序中使用的配置文件中禁用它. 我的第一个想法是如果禁用方法缓存,则调用net.sf.ehcache.CacheManager.CacheManager(),不带参数.抛出异常: java.lang.IllegalArgumentException: loadCaches must not return an empty Collection at org.springframework.util.Assert.notEmpty(Assert.java:268) at org.springframework.cache.support.AbstractCacheManager.afterPropertiesSet(AbstractCacheManager.java:49) 我的第二个想法是使用默认数据配置net.sf.ehcache.CacheManager.CacheManager(),以便不使用缓存(maxElementsInMemory 0等).但是仍然使用缓存,这不是我想要的. 有一个属性net.sf.ehcache.disabled但我不想禁用也使用ehcache的hibernate缓存. 问:如何将所有内容配置为具有弹簧方法缓存但从外部配置文件中禁用它?我不想修改应用程序上下文,也不想修改启用/禁用方法缓存的代码.只能修改我们在应用程序中使用的配置文件. 解决方法
我要找的是NoOpCacheManager:
为了使它工作,我从xml bean创建切换到工厂 我做了如下的事情: @Bean public CacheManager cacheManager() { final CacheManager cacheManager; if (this.methodCacheManager != null) { final EhCacheCacheManager ehCacheCacheManager = new EhCacheCacheManager(); ehCacheCacheManager.setCacheManager(this.methodCacheManager); cacheManager = ehCacheCacheManager; } else { cacheManager = new NoOpCacheManager(); } return cacheManager; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – JVM消耗所有CPU,大多数线程都是BLOCKED. JVM错误?
- 基于Netty和SpringBoot实现一个轻量级RPC框架-Client篇
- springmvc限流拦截器的示例代码
- java – 如何给两个不同的类相同的接口?
- SpringMVC拦截器实现登录认证
- JQuery
- java String类常量池分析及"equals"和"==”区别
- java – Apache Wicket – wicket-auth-sessions – 防止多
- iis – ODBC驱动程序的OLE DB提供程序错误“80004005”
- java – Wicket应用程序中的全局可访问资源