1.SpringContextHolder.java
package com.Nightliar.business.common.utils;
import com.Nightliar.business.entity.SysMenu;
import com.Nightliar.business.enums.CacheType;
import com.Nightliar.business.service.ISysMenuService;
import com.Nightliar.business.shiro.ShiroUser;
import com.Nightliar.business.utils.BackendLoginUtil;
import com.Nightliar.business.utils.Constant;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
*
* Created by Nightliar
* 2018-03-25 20:59
*
*/
@Component
public class UserUtils {
@Autowired
private static ISysMenuService menuService = SpringContextHolder.getBean(ISysMenuService.class);
/**
* 得到当前用户权限下的所有资源
*/
@SuppressWarnings("unchecked")
public static List<SysMenu> getMyListMenu(){
ShiroUser shiroUser = BackendLoginUtil.getUser();
List<SysMenu> menuList = (List<SysMenu>)CacheUtils.get(CacheType.CACHE_SYSCACHE.getCode(), Constant.SYSCACHE_USER_INDEXMENU + shiroUser.getId());
if (menuList == null){
EntityWrapper<SysMenu> wrapper = new EntityWrapper<>();
wrapper.orderBy("sort");
wrapper.in("id", shiroUser.getMenuIds());
menuList = menuService.selectList(wrapper);
CacheUtils.put(CacheType.CACHE_SYSCACHE.getCode(), Constant.SYSCACHE_USER_INDEXMENU + shiroUser.getId(), menuList);
}
return menuList;
}
}
2.CacheUtils.java(实例)
package com.Nightliar.business.common.utils;
import com.Nightliar.business.enums.CacheType;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;
import java.util.List;
/**
*
* Created by Nightliar
* 2018-3-29 21:50
*
*/
public class CacheUtils {
private static CacheManager cacheManager = (CacheManager)SpringContextHolder.getBean("ehcacheManager");
//默认为系统缓存
private static final String SYS_CACHE = CacheType.CACHE_SYSCACHE.getCode();
/**
* 获取SYS_CACHE缓存
* @param key
*/
public static Object get(String key) {
return get(SYS_CACHE, key);
}
/**
* 获取缓存
* @param cacheName
* @param key
*/
public static Object get(String cacheName, String key) {
Element element = getCache(cacheName).get(key);
return element==null?null:element.getObjectValue();
}
/**
* 写入SYS_CACHE缓存
* @param key
* @return
*/
public static void put(String key, Object value) {
put(SYS_CACHE, key, value);
}
/**
* 写入缓存
* @param cacheName
* @param key
* @param value
*/
public static void put(String cacheName, String key, Object value) {
Element element = new Element(key, value);
getCache(cacheName).put(element);
}
/**
* 从SYS_CACHE缓存中移除
* @param key
* @return
*/
public static void remove(String key) {
remove(SYS_CACHE, key);
}
/**
* 从缓存中移除
* @param cacheName
* @param key
*/
public static void remove(String cacheName, String key) {
getCache(cacheName).remove(key);
}
/**
* 从缓存中删除某一类型的缓存
* @param cacheName
*/
public static void removeCache(String cacheName){
getCache(cacheName).removeAll();
}
/**
* 获得一个Cache,没有则创建一个。
* @param cacheName
* @return
*/
public static Cache getCache(String cacheName){
Cache cache = cacheManager.getCache(cacheName);
if (cache == null){
cacheManager.addCache(cacheName);
cache = cacheManager.getCache(cacheName);
cache.getCacheConfiguration().setEternal(true);
}
return cache;
}
public static CacheManager getCacheManager() {
return cacheManager;
}
}