您的位置:首页 > 编程语言 > ASP

aspectjrt 面向切面,拦截返回值,并修改返回值

2016-03-10 00:00 507 查看
摘要: 面向切面,aop

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=错误的参数}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  aop @Around 面向切面