您的位置:首页 > 运维架构

AOP无法切入同类调用方法的解决办法

2017-07-20 10:30 381 查看
@Controller
@RequestMapping("/redis")
public class RedisAction extends BaseAction {

@Autowired
private RedisService redisService;

@Autowired
private SysUserService sysUserService;

@RequestMapping("/ValueOperations.do")
@ControllerLog(module = "redis缓存", methods = "ValueOperations", description = "ValueOperations")
public void ValueOperations() throws Exception {
redisService.setCacheObject("xxx","xxx");
System.out.println(redisService.getCacheObject("xxx").toString());
SysUser user = getSysUser("zxm");
redisService.setCacheObject("zxm",user);
SysUser sysUser = redisService.getCacheObject("zxm");
System.out.println(sysUser.getUserName());

SysUser user1 = sysUserService.getSysUser("sqadmin");
redisService.setCacheObject("sqadmin",user1);
SysUser sysUser1 = redisService.getCacheObject("sqadmin");
System.out.println(sysUser1.getUserName());
((RedisAction) SpringContextUtil.getCurrentProxy()).getSysUser("zxm");
SpringContextUtil.getBeanByName(RedisAction.class).deleteSysUser("zxm");

}

@RequestMapping("/ListOperations.do")
@ControllerLog(module = "redis缓存", methods = "ListOperations", description = "ListOperations")
public void ListOperations() throws Exception {
SearchContext searchContext = new SearchContext();
List<SysUser> sysUserList = sysUserService.query(SysUser.class,searchContext);
redisService.setCacheList("dataList",sysUserList);
List<SysFunctionPerm> sysFunctionPermList = sysUserService.query(SysFunctionPerm.class,searchContext);
redisService.setCacheList("sysFunctionPermList",sysFunctionPermList);
List<SysUserRole> SysUserRoleList = sysUserService.query(SysUserRole.class,searchContext);
redisService.setCacheList("SysUserRoleList",SysUserRoleList);
List<SysUser> list = redisService.getCacheList("dataList");
for(SysUser sysUser:list){
System.out.println(sysUser.getUserName());
}
}

@RequestMapping("/HashOperations.do")
@ControllerLog(module = "redis缓存", methods = "HashOperations", description = "HashOperations")
public void HashOperations() throws Exception {
SearchContext searchContext = new SearchContext();
List<SysUser> sysUserList = sysUserService.query(SysUser.class,searchContext);
Map<String,SysUser> map = new LinkedHashMap<String,SysUser>();
for(SysUser sysUser:sysUserList){
map.put("userMap"+sysUser.getUserCode(),sysUser);
}
redisService.addAllMap("allMap",map,10);
redisService.setCacheMap("userMap",map);
redisService.setCacheObject("objectMap",map);
SysUser sysUser = new SysUser();
sysUser.setUserCode("xxx");
sysUser.setUserName("xxx");
redisService.insertToMap("userMap","userMap"+sysUser.getUserCode(),sysUser);

redisService.delMapField("userMap","userMap"+sysUser.getUserCode());
Map<String,SysUser> sysuerMap = redisService.getCacheMap("allMap");
Map<String,SysUser> sysuerMap2 = redisService.getCacheObject("objectMap");
for (Map.Entry<String,SysUser> entry : sysuerMap.entrySet()) {
System.out.println(entry.getKey()+"====="+entry.getValue().getUserName());
}
redisService.removeCache("userMap");
redisService.removeCache("objectMap");
}

@RequestMapping("/SetOperations.do")
@ControllerLog(module = "redis缓存", methods = "SetOperations", description = "SetOperations")
public void SetOperations() throws Exception {
SearchContext searchContext = new SearchContext();
List<SysUser> sysUserList = sysUserService.query(SysUser.class,searchContext);
Set<SysUser> sysUserSet = new LinkedHashSet<SysUser>();
for(SysUser sysUser:sysUserList){
sysUserSet.add(sysUser);
}
redisService.setCacheSet("set",sysUserSet);
Set<SysUser> sysUserSet2 = redisService.getCacheSet("set");
Iterator<SysUser> it = sysUserSet2.iterator();
while(it.hasNext()){
System.out.println(it.next().getUserName());
}
}

@RedisCache(key = "#userCode",timeOut = 100)
public SysUser getSysUser(String userCode) {
SysUser sysUser = null;
try {
SearchContext sc = new SearchContext();
sc.addCondition(Property.forName(SysUser.Attr_userCode).eq(userCode.trim()));
sc.addCondition(Property.forName(SysUser.Attr_deleted).eq("0"));
sysUser = (Sys
bb29
User) sysUserService.getBaseDao().uniqueResult(SysUser.class, sc);
} catch (Exception e) {
e.printStackTrace();
}
return sysUser;
}

@RedisEvict(key = "zxm")
public boolean deleteSysUser(String userCode){
System.out.println(userCode);
return true;
}
package com.commom.utils;import org.apache.log4j.Logger;import org.springframework.aop.framework.AopContext;import org.springframework.beans.BeansException;import org.springframework.beans.factory.NoSuchBeanDefinitionException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;@Componentpublic class SpringContextUtil implements ApplicationContextAware {private static Logger logger = Logger.getLogger(SpringContextUtil.class);private static ApplicationContext applicationContext = null;public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {logger.info("------SpringContextUtil setApplicationContext-------");SpringContextUtil.applicationContext = applicationContext;}public static ApplicationContext getApplicationContext() {return applicationContext;}/*** 注意 bean name默认 = 类名(首字母小写)* 例如: A8sClusterDao = getBean("k8sClusterDao")* @param name* @return* @throws BeansException*/public static Object getBean(String name) throws BeansException {return applicationContext.getBean(name);}/*** 根据类名获取到bean* @param <T>* @param clazz* @return* @throws BeansException*/@SuppressWarnings("unchecked")public static <T> T getBeanByName(Class<T> clazz) throws BeansException {try {char[] cs=clazz.getSimpleName().toCharArray();cs[0] += 32;//首字母大写到小写return (T) applicationContext.getBean(String.valueOf(cs));} catch (Exception e) {e.printStackTrace();return null;}}public static boolean containsBean(String name) {return applicationContext.containsBean(name);}public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {return applicationContext.isSingleton(name);}/*** 获取当前代理对象(必须配置expose-proxy="true")* <aop:aspectj-autoproxy proxy-target-class="true"expose-proxy="true"/>* @param <T>* @return* @throws Exception*/public static <T> T getCurrentProxy() throws Exception{return (T) AopContext.currentProxy();}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: