老师为啥这里是用接口类?而不是用实现类?

老师为啥这里是用接口类?而不是用实现类?

http://img1.sycdn.imooc.com//climg/5d313f610001096918450576.jpg

我发现我把箭头这改成CustomerDaoImpl也能运行成功

因为我看前几门课,不是说如果想让实现类作为切入点的话就要这样吗?

http://img1.sycdn.imooc.com//climg/5d313fe300014fa806170079.jpg

这样的话不就应该改成

execution(* com.mason.aspectJ.demo2.CustomerDao+.save(..))

这样吗?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好。下面来一条条解答你的疑惑:

1、这里的“+”只是老师用来表示拼接的,并不是应该放入表达式的匹配符

http://img1.sycdn.imooc.com//climg/5d3184570001a7af06910182.jpg

所以说老师的配置是符合规范的:

http://img1.sycdn.imooc.com//climg/5d31866900014f2511190280.jpg

2、

joinPoint.proceed()是返回切入点方法的返回值,这里设置成Object其实是为了兼容所有返回值。因为Object是所有类的父类。

如果解答了同学的疑问,望采纳~

祝学习愉快~


  • MasonM 提问者 #1
    老师你的意思是: 那个+号是不能放进表达式里面的吗?只是老师用来表示而已的吗? 直接execution(* com.mason.aspectJ.demo2.CustomerDao.save(..)) 这样子就可以匹配到demo2包下所有实现了CustomerDao接口的实现类吗?
    2019-07-20 15:18:27
  • 好帮手慕阿莹 回复 提问者 MasonM #2
    是的,同学理解的没错。祝学习愉快。
    2019-07-20 16:26:37
提问者 MasonM 2019-07-19 13:19:29

另外我想问一下

//环绕通知
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
    System.out.println("XML环绕前==========");
    Object o = joinPoint.proceed();
    System.out.println("XML环绕后==========");
    return o;
}

环绕通知里,Object o = joinPoint.proceed();

 joinPoint.proceed()是返回切入点方法的返回值吗?

我不懂那个Object是什么?为啥是返回一个对象?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师