AOP无法切入同类调用方法的解决办法
来源:互联网 发布:cf手游刷图软件 编辑:程序博客网 时间:2024/05/17 04:54
@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 = (SysUser) 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(); }}
阅读全文
0 0
- AOP无法切入同类调用方法的解决办法
- 关于AOP无法切入同类调用方法的问题
- 关于AOP无法切入同类调用方法的问题
- 关于AOP无法切入同类调用方法的问题
- 关于AOP无法切入同类调用方法的问题
- 关于AOP无法切入同类调用方法的问题
- 关于AOP无法切入同类调用方法的问题
- AOP切入同类调用方法-AopContext.currentProxy()
- AOP 同类方法调用无法进入切面
- spring AOP中自身方法调用无法应用代理解决办法
- Spring中APO切入同类下的其他方法实现事务控制
- service层AOP(基于注解的方法切入)
- Spring aop切入方法都用不到
- Java不同类方法的调用以及static方法小解
- Spring AOP无法拦截对象的内部方法调用问题
- SpringMVC在Controller层实现aop,同类中方法调用问题
- SpringMVC在Controller层实现aop,同类中方法调用问题
- 在不同类、对话框间函数互相调用的方法
- 两个mysql数据库的问题
- java AES时遇到的问题和解决办法
- RSA加密
- awk打印单双引号
- linux cp命令参数及用法详解---linux 复制文件命令cp
- AOP无法切入同类调用方法的解决办法
- iOS开发-版本管理常用git命令
- 从MultipartFile获取File式的inputStream
- Flink学习笔记 --- 理解DataStream WordCount
- 命令模式
- UVA 11549 Calculator Conundrum Floyd判圈算法 Brent判圈算法 相关性质及证明
- issue-15 了解闭包里如何使用外围作用域里的变量
- HorizontalScrollView 初始化第一次时使用smoothScrollTo无效的解决办法
- SOAPUI测试步骤(七)---DataSink TestStep