/** * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. * * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS * graphic logo is a trademark of OpenMRS Inc. */ package org.openmrs.api.cache; import org.springframework.cache.CacheManager; import org.springframework.cache.ehcache.EhCacheCacheManager; import org.springframework.cache.ehcache.EhCacheManagerFactoryBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; /** * CacheConfig provides a cache manager for the @Cacheable annotation and uses ehCache under the hood. * The config of ehCache is loaded from ehcache-api.xml and can be extended by modules through apiCacheConfig.properties. * For more details see the wiki page at <a href="https://wiki.openmrs.org/x/IYaEBg">https://wiki.openmrs.org/x/IYaEBg</a> */ @Configuration public class CacheConfig { @Bean(name = "apiCacheManagerFactoryBean") public EhCacheManagerFactoryBean apiCacheManagerFactoryBean(){ OpenmrsCacheManagerFactoryBean cacheManagerFactoryBean = new OpenmrsCacheManagerFactoryBean(); cacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache-api.xml")); cacheManagerFactoryBean.setShared(false); cacheManagerFactoryBean.setAcceptExisting(true); return cacheManagerFactoryBean; } @Bean(name = "apiCacheManager") public CacheManager cacheManager() { return new EhCacheCacheManager(apiCacheManagerFactoryBean().getObject()); } }