前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASpectJ对AOP的实现

ASpectJ对AOP的实现

作者头像
用户1216491
发布2018-01-24 16:03:47
6580
发布2018-01-24 16:03:47
举报
文章被收录于专栏:xdecodexdecode

切入点表达式

基于注解

代码语言:javascript
复制
 1 @Aspect // 表示当前类切面
 2 public class MyAspect {
 3 
 4     @Before("execution(* *..ISomeService.doFirst(..))")
 5     public void before(JoinPoint jp) {
 6         System.out.println("执行 before2" + jp);
 7     }
 8 
 9     @AfterReturning(value = "execution(* *..ISomeService.doSecond(..))", returning = "result")
10     public void myAfterReturning(Object result) {
11         System.out.println("执行 my after, result" + result);
12     }
13 
14     // 定义了一个切入点
15     @Pointcut("execution(* *..ISomeService.doThird(..))")
16     public void doThirdPointCut(){}
17 
18     @Around("doThirdPointCut()")
19     public Object myAround(ProceedingJoinPoint pp) throws Throwable {
20         System.out.println("执行around1");
21         Object res = pp.proceed();
22         System.out.println("执行around2 " + res);
23         return res;
24     }
25 
26 }
代码语言:javascript
复制
1         <bean id="myAspect" class="day1208.MyAspectXML"/>
2         <bean id="someService" class="day1208.ServiceImpl"/>
3         <aop:aspectj-autoproxy/>

如果运行的时候出现error at ::0 can't find referenced pointcut, 一般是因为jdk版本和AspectJ.Weaver不一致.

1.6以下的aspectj需要用jdk1.6运行. 

基于XML

代码语言:javascript
复制
 1 public class MyAspectXML {
 2 
 3     public void before(JoinPoint jp) {
 4         System.out.println("执行 before2" + jp);
 5     }
 6 
 7     public void myAfterReturning(Object result) {
 8         System.out.println("执行 my after, result" + result);
 9     }
10     public void myAfterReturning() {
11         System.out.println("执行 my after, no result");
12     }
13 
14     public void doThirdPointCut(){}
15 
16     public Object myAround(ProceedingJoinPoint pp) throws Throwable {
17         System.out.println("执行around1");
18         Object res = pp.proceed();
19         System.out.println("执行around2 " + res);
20         return res;
21     }
22 
23 }
代码语言:javascript
复制
1         <aop:config>
2                 <aop:pointcut id="secondPT" expression="execution(* *..ISomeService.doSecond(..))"/>
3                 <aop:aspect ref="myAspect">
4                         <aop:before method="before" pointcut="execution(* *..ISomeService.doFirst(..))"/>
5                         <aop:after-returning method="myAfterReturning(java.lang.Object)" pointcut-ref="secondPT" returning="result"/>
6                 </aop:aspect>
7         </aop:config>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-12-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 切入点表达式
  • 基于注解
  • 基于XML
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档