比如说 :
有一个 service层有一个切点 test(String str)方法,并且需要一个参数
在这个方法调用之前,会调用before方法
我想问的就是 test方法里的那个参数 能不能传到before方法里?
我现在before方法里就需要外面传过来的一个参数 应该怎么传
(急)java aop切面的一个问题
答案:2 悬赏:0 手机版
解决时间 2021-02-15 20:50
- 提问者网友:浮克旳回音
- 2021-02-14 21:14
最佳答案
- 五星知识达人网友:一把行者刀
- 2021-02-14 22:36
两种方法吧!
第一种在Before函数里面直接用连接点。
@Before("@annotation(com.cgs.anno.NeedTest)")
public void atAnnotaionTest(JoinPoint pjp) throws Throwable {
Object[] args= pjp.getArgs();
System.out.println("atAnnotaionTest() executed!"+args[0]);
}第二种是参数绑定
@Before("target(com.cgs.service) && args(name,..)")
public void bindJoinPointParams(String name){
System.out.println("----bindJoinPointParams()----");
System.out.println("name:"+name);
System.out.println("----bindJoinPointParams()----");
}第二种情况,记得一定要开启CGLib动态代理,即
自然,切点的选择就是你自己的事情了。这里随便举个例子
第一种在Before函数里面直接用连接点。
@Before("@annotation(com.cgs.anno.NeedTest)")
public void atAnnotaionTest(JoinPoint pjp) throws Throwable {
Object[] args= pjp.getArgs();
System.out.println("atAnnotaionTest() executed!"+args[0]);
}第二种是参数绑定
@Before("target(com.cgs.service) && args(name,..)")
public void bindJoinPointParams(String name){
System.out.println("----bindJoinPointParams()----");
System.out.println("name:"+name);
System.out.println("----bindJoinPointParams()----");
}第二种情况,记得一定要开启CGLib动态代理,即
自然,切点的选择就是你自己的事情了。这里随便举个例子
全部回答
- 1楼网友:人间朝暮
- 2021-02-15 00:13
比如说我定义两个函数:begin(){} ;end(){}
然后呢我就建了一个类,类中加了三个成员函数: first(){},second(){},third(){};
如果我给这个三个成员函数加了aop,只要我调用者三个函数时 调用都会先调用begin(){},调用后都会调用end(){}。
形式如下变成了三个函数:
first(){} ---------> 1.begin(){}; 2.first(){} 3.end(){}
剩下两个也一样,类似于junit测试里的before和after中间夹着你自己的函数。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯