<dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> <version>3.10.1</version> </dependency> import org.ehcache.CacheManager; import org.ehcache.config.Configuration; import org.ehcache.xml.XmlConfiguration; public class CacheManagerInitializer { public CacheManager initializeCacheManager() { Configuration xmlConfig = new XmlConfiguration(getClass().getResource("/ehcache.xml")); CacheManager cacheManager = CacheManagerBuilder.newCacheManager(xmlConfig); cacheManager.init(); return cacheManager; } } import org.ehcache.Cache; import org.ehcache.CacheManager; import org.ehcache.config.builders.CacheConfigurationBuilder; import org.ehcache.config.builders.ResourcePoolsBuilder; import org.ehcache.expiry.Duration; import org.ehcache.expiry.Expirations; public class DataCache implements Cache<String, Object> { private static final Duration CACHE_EXPIRATION = Duration.ofMinutes(30); private final Cache<String, Object> cache; public DataCache(CacheManager cacheManager) { cache = cacheManager.createCache("dataCache", CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, Object.class, ResourcePoolsBuilder.heap(100)) .withExpiry(Expirations.timeToLiveExpiration(CACHE_EXPIRATION)) .build()); } @Override public Object get(String key) throws CacheException { return cache.get(key); } @Override public void put(String key, Object value) throws CacheException { cache.put(key, value); } } public class Application { private final Cache<String, Object> dataCache; public Application(CacheManager cacheManager) { dataCache = new DataCache(cacheManager); } public Object getData(String key) { Object data = dataCache.get(key); if (data == null) { data = fetchDataFromDataSource(key); dataCache.put(key, data); } return data; } }


上一篇:
下一篇:
切换中文