JAVA全系列 教程
3762个小节阅读:7089.4k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
使用注解时,通知方法也可以设置方法参数,使用方法参数可以获取到切入点的方法参数、返回值、抛出的异常。
在DemoServiceImpl中添加一个带有参数和返回值的方法。
xxxxxxxxxx
public String demo2(String name,int age){
System.out.println("demo2:name:"+name+",age:"+age);
return name+","+age;
}
新建一个通知类MyAdviceParameter。
注意:
以前在XML中绑定参数表达式使用and关键字,而在Java代码中使用&&符号
使用@Pointcut绑定起来更简单。空方法必须带有能与之对应的参数
xxxxxxxxxx
@Aspect
@Component
public class MyAdviceParameter {
@Pointcut("execution(* com.bjsxt.annotation.DemoServiceImpl.demo2(String,int)) && args(name,age)")
public void pc(String name,int age){
System.out.println("pc:name:"+name+",age:"+age);// 输出语句不会被输出
}
// @Before(value = "execution(* com.bjsxt.annotation.DemoServiceImpl.demo2(String,int)) && args(name,age)")
@Before("pc(name,age)")
void before(String name,int age){
System.out.println("before-name:"+name+",age:"+age);
}
@AfterReturning(value="pc(name,age)",returning = "result")
void afterReturning(String name,int age,String result){
System.out.println("afterReturning:name:"+name+",age:"+age+",result:"+result);
}
@After("pc(name,age)")
void after(String name,int age){
System.out.println("after:name:"+name+",age:"+age);
}
@AfterThrowing(value = "pc(name,age)",throwing = "e")
void afterThrowing(String name,int age,Exception e){
System.out.println("afterThrowing:name:"+name+",age:"+age+",e:"+e);
}
}