Spring Aop 细节详解
来源:互联网 发布:java内部类初始化 编辑:程序博客网 时间:2024/06/06 05:08
Spring Aop 细节详解
@Aspect 注解方法执行
package com.atguigu.spring.aop.impl;import java.util.Arrays;import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.springframework.stereotype.Component;@Component@Aspectpublic class LoggingAspect {/** * joinPoint 包含了代理中的所有方法名和参数名 */@Before(value = "execution(public int com.atguigu.spring.struts2.inter.AuthodCaluer.add(int, int))")public void beforeMethod(JoinPoint joinPoint) {String methods = joinPoint.getSignature().getName();Object args[] = joinPoint.getArgs();System.out.println("原方法中的方法名称是:"+methods);System.out.println("原方法中的参数是:"+Arrays.asList(args));System.out.println("The Method begins with methods");}/** * 方法执行完成,无论怎么样都会执行的通知 */@After(value = "execution(public int com.atguigu.spring.struts2.inter.AuthodCaluerLogImpl.mul(int, int))")public void afterMethod() {System.out.println("The Method ends");}/** * 当方法有返回值就会执行,可获取返回值 */@AfterReturning(value = "execution(public int com.atguigu.spring.struts2.inter.AuthodCaluerLogImpl.mul(int, int))",returning="result")public int afterReturning(Object result) {System.out.println("result = "+result);System.out.println("The Method ends");return 0;}/** * 当方法有异常抛出执行,可以定位异常 */@AfterThrowing(value = "execution(public int com.atguigu.spring.struts2.inter.AuthodCaluerLogImpl.div(int, int))",throwing="ex")public void afterThrowing(Exception ex) {System.out.println("异常为 : "+ex);System.out.println("The Method has execption");}}
切面执行优先级以及定义pointCut
package com.atguigu.spring.aop.impl;import java.util.Arrays;import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.core.annotation.Order;import org.springframework.stereotype.Component;/** * 切面的执行优先级,只越小,优先级越高 */@Order(1)@Component@Aspectpublic class ValateAspect {/** * 定义切面,达到方法复用,在定义切面的execution的时候,只需要引入 包.类.方法() 即可瞬间定义execution */@Pointcut(value="execution(public int com.atguigu.spring.struts2.inter.AuthodCaluer.add(int, int))")public void pointCutAspect(){}/** * joinPoint 包含了代理中的所有方法名和参数名 */@Before(value = "com.atguigu.spring.aop.impl.LoggingAspect.pointCutAspect()")public void beforeMethod(JoinPoint joinPoint) {System.out.println("验证切面....");}}
0 0
- Spring Aop 细节详解
- Spring框架-AOP细节
- 详解Spring AOP
- Spring AOP 详解
- Spring AOP 详解
- Spring AOP 详解
- Spring AOP 详解
- Spring AOP详解
- Spring AOP 详解
- Spring AOP 详解
- Spring AOP 详解
- spring AOP详解
- Spring AOP 详解
- Spring--AOP详解
- Spring中的AOP详解
- Spring aop学习详解
- Spring AOP 详解
- Spring AOP 详解
- 关于stringWithFormat
- 基于注解的SpringMvc配置说明
- Android进阶2之 阴影制作(Shadow)
- IO流字节流copy方法
- contest: Codeforces Round #297 (Div. 2), problem: (B) Pasha and String
- Spring Aop 细节详解
- 那一夜的风情……
- PC获取手机截图、复制文件、安装APK
- tomcat结合Java定时任务工具实现web中的定时任务
- Oracle:数据库原理
- 完美素数
- Ubuntu下Samba配置
- 题目6:MySQL----------Employees Earning More Than Their Managers
- Android 分享一个流量显示界面