LiiuZeYu_branch
lzy 10 months ago
parent 61e04e3a89
commit 6dd4f54ffd

@ -0,0 +1,87 @@
/*
* Copyright (c) 2018-2999 广 All rights reserved.
*
* https://www.mall4j.com/
*
*
*
*
*/
package com.yami.shop.common.util;
import lombok.AllArgsConstructor;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.stereotype.Component;
/**
* CacheManagerUtil便Spring
* SpringCacheManager
* 便
* Spring@Component使
*
* @author lanhai
*/
@Component
@AllArgsConstructor
public class CacheManagerUtil {
// Spring的缓存管理器用于获取具体的缓存对象等操作通过构造注入的方式获取
private CacheManager cacheManager;
/**
*
*
* @param <T>
* @param cacheName CacheManager
* @param key
* @return Tnull
*/
@SuppressWarnings({"unchecked"})
public <T> T getCache(String cacheName, String key) {
// 通过缓存管理器获取指定名称的缓存对象
Cache cache = cacheManager.getCache(cacheName);
if (cache == null) {
return null;
}
// 从缓存对象中尝试获取对应键的值的包装对象
Cache.ValueWrapper valueWrapper = cache.get(key);
if (valueWrapper == null) {
return null;
}
// 从包装对象中获取实际的值并转换为指定的泛型类型T返回
return (T) valueWrapper.get();
}
/**
*
*
* @param cacheName CacheManager
* @param key
* @param value Java
*/
public void putCache(String cacheName, String key, Object value) {
// 通过缓存管理器获取指定名称的缓存对象
Cache cache = cacheManager.getCache(cacheName);
if (cache!= null) {
// 如果缓存对象存在,则将键值对存入该缓存对象中
cache.put(key, value);
}
}
/**
*
*
* @param cacheName CacheManager
* @param key
*/
public void evictCache(String cacheName, String key) {
// 通过缓存管理器获取指定名称的缓存对象
Cache cache = cacheManager.getCache(cacheName);
if (cache!= null) {
// 如果缓存对象存在,则清除对应键的缓存数据
cache.evict(key);
}
}
}
Loading…
Cancel
Save