当前位置: 萬仟网 > IT编程>开发语言>Java > SpringAOP中的注解配置

SpringAOP中的注解配置

2019年10月31日  | 萬仟网IT编程  | 我要评论

使用注解实现springaop的功能:
例子:

//表示这是被注入spring容器中的
@component

//表示这是个切面类 @aspect public class annotationhandler { /* * 在一个方法上面加上注解来定义切入点 * 这个切入点的名字就是这个方法的名字 * 这个方法本身不需要有什么作用 * 这个方法的意义就是:给这个 @pointcut注解一个可以书写的地方 * 因为注解只能写在方法、属性、类的上面,并且方法名作为切入点的名字 * */ //简单来说就是将查到的方法用mypointcut()方法名代替 @pointcut("execution(public * com.briup.aop.service..*.*(..))") public void mypointcut(){} //注:这里面的所有方法的joinpoint类型参数都可以去掉不写,如果确实用不上的话 @before("mypointcut()")//在mypointcut()中查到的方法之前切入 public void beforetest(joinpoint p){ system.out.println(p.getsignature().getname()+" before..."); } /* * @after和@afterreturning * * @after标注的方法会在切入点上的方法结束后被调用(不管是不是正常的结束). * @afterreturning标注的方法只会在切入点上的方法正常结束后才被调用. * */ @after("mypointcut()")//在mypointcut()中查到的方法之后切入 public void aftertest(joinpoint p){ system.out.println(p.getsignature().getname()+" after..."); } @afterreturning("mypointcut()") public void afterreturningtest(joinpoint p){ system.out.println(p.getsignature().getname()+" afterreturning"); } @around("mypointcut()")//在mypointcut()中查到的方法环绕切入 public object aroundtest(proceedingjoinpoint pjp)throws throwable{ system.out.println(pjp.getsignature().getname()+" is start.."); //调用连接点的方法去执行 object obj = pjp.proceed(); system.out.println(pjp.getsignature().getname()+" is end.."); return obj; } //在切入点中的方法执行期间抛出异常的时候,会调用这个 @afterthrowing注解所标注的方法 @afterthrowing(value="mypointcut()",throwing="ex") public void throwingtest(joinpoint p,exception ex){ system.out.println(p.getsignature().getname()+" is throwing..."+ex.getmessage()); } }

 


xml配置:注意给例子中使用的其他的类上面也使用注解

<aop:aspectj-autoproxy/>
<context:component-scan base-package="com.briup.aop"/>

<!-- 让spring扫描注解 -->
<context:component-scan base-package="com.briup.aop"></context:component-scan>
<!-- 识别aspectj的注解 -->
<aop:aspectj-autoproxy/>

 

注意:<aop:aspectj-autoproxy proxy-target-class="true"/>这样配置则是强制使用cglib进行代理

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
Copyright © 2020  萬仟网 保留所有权利. 粤ICP备17035492号-1
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com