aspectjrt 面向切面,拦截返回值,并修改返回值
2016-03-10 00:00
507 查看
摘要: 面向切面,aop
maven依赖
aop代码
切入点
测试代码
测试结果
最终返回{value=某个对象, states=true}
最终返回{err=错误的参数}
maven依赖
<dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.6.12</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.6.12</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.2</version> </dependency>
aop代码
package com.aop; import org.springframework.aop.framework.AopInfrastructureBean; import org.springframework.stereotype.Component; import org.springframework.stereotype.Repository; import org.springframework.ui.ModelMap; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; @Repository @Component @Aspect public class Aop implements AopInfrastructureBean { @Pointcut("execution(* com.spring..*.do*(..)) ") public void pointCut() { } @Around("pointCut()") public Object Around(ProceedingJoinPoint pjp) { ModelMap map ; try { //获取原始返回值 map = (ModelMap) pjp.proceed(); map.put("states", true); } catch (Throwable ex) { map =new ModelMap(); map.put("err", ex.getMessage()); } return map; } }
切入点
public ModelMap doAdd() { ModelMap map=new ModelMap()ring; map.addAttribute("value", "某个对象"); return map; } public ModelMap doDel() throws Exception { ModelMap map=new ModelMap(); if(true){ throw new Exception("錯誤的參數"); } return map; }
测试代码
ModelMap map=user.doAdd(); System.out.println("最终返回"+map); ModelMap map2=user.doDel(); System.out.println("最终返回"+map2);
测试结果
最终返回{value=某个对象, states=true}
最终返回{err=错误的参数}
相关文章推荐
- yui3的AOP(面向切面编程)和OOP(面向对象编程)
- JavaScript AOP编程实例
- 使用AOP改善javascript代码
- 初识SmartJS - AOP三剑客
- 面向切面编程(AOP)的理解
- java使用动态代理来实现AOP(日志记录)的实例代码
- JavaScript之AOP编程实例
- Javascript aop(面向切面编程)之around(环绕)分析
- php笔记之:AOP的应用
- spring aop两种配置方式
- 实例讲解Java的Spring框架中的AOP实现
- java基于AspectJ(面向切面编程)编码示例分享
- autoload-cache-1.7 发布
- autoload-cache-2.4 发布
- Spring3 AOP配置异常。执行时间记录
- AOP切面编程
- spring 切面memcached的环绕通知
- 淘宝Tprofiler工具实现分析
- 关于HouseMD
- Spring AOP介绍及源码分析