为了账号安全,请及时绑定邮箱和手机立即绑定

探秘Spring AOP

apollo JAVA开发工程师
难度高级
时长 2小时30分
学习人数
综合评分9.67
84人评价 查看评价
9.9 内容实用
9.4 简洁易懂
9.7 逻辑清晰
  • 切面表达式

    查看全部
  • https://img1.sycdn.imooc.com//5c1afa7700012b3309630556.jpgaop应用场景

    查看全部
    0 采集 收起 来源:面向切面编程

    2018-12-20

  • 5种Advice注解

    @Before:前置通知

    @After(finally):后置通知,方法执行完之后

    @AfterReturning:返回通知,成功执行之后

    @AfterThrowing:异常通知,抛出异常之后

    @Around:环绕通知

    查看全部
    0 采集 收起 来源:advice注解

    2018-12-13

  • 匹配注解

    //匹配方法标注有AdminOnly的注解的方法

    @Pointcut("@annotation(com.imooc.demo.security.AdminOnly)")

    public void annoDemo(){}


    //匹配标注有Beta的类底下的方法,要求的annotation的RetentionPolicy级别为CLASS

    @Pointcut("@within(com.google.common.annotations.Beta)")

    public void annoWithinDemo(){}


    //匹配标注有Repository的类底下的方法,要求的annotation的RetentionPolicy级别为RUNTIME

    @Pointcut("@target(org.springframework.stereotype.Repository)")

    public void annoTargetDemo(){}


    //匹配传入的参数类标注有Repository注解的方法

    @Pointcut("@args(org.springframework.stereotype.Repository)")

    public void annoArgsDemo(){}

    查看全部
    1 采集 收起 来源:注解匹配

    2018-12-13

  • 匹配参数

    //匹配任何以find开头而且只有一个Long参数的方法

    @Pointcut("execution(* *..find*(Long))"){}

    public void demo1(){}


    //匹配任何只有一个Long参数的为Long型的方法

    @Point cut("args(Long)")

    public void demo2(){}


    //匹配任何以find开头的而且第一个参数为Long型的方法

    @Pointcut("execution(* *..find*(Long,..))")

    public void demo3(){}


    //匹配第一个参数为Long型的方法

    @Pointcut("args(Long,..)")

    public void demo4(){}

    查看全部
    1 采集 收起 来源:参数匹配

    2018-12-13

  • 匹配对象

    //匹配AOP对象的目标对象为指定类型的方法,即DemoDao的aop代理对象的方法

    @Pointcut("this(com.imooc.DemoDao)")

    pblic void thisDemo(){}


    //匹配实现IDao接口的目标对象(而不是aop代理后的对象)的方法,这里即DemoDao的方法

    @Pointcut("target(com.imooc.IDao)")

    public void targetDemo(){}


    //匹配所有以Service结尾的bean里头的方法

    @Pointcut("bean(*Service)")

    public void beanDemo(){}

    查看全部
    0 采集 收起 来源:对象匹配

    2018-12-13

  • //匹配包/类型


    //匹配ProductService类里的所有方法

    @Pointcut("within(com.imooc.service.ProductService)")

    public void matchType(){}

    @Before("matchType")

    public void before(){}


    //匹配com.imooc包及子包下所有类的方法

    @Pointcut("within(com.imooc..*)")

    public void matchPackage(){}

    查看全部
    0 采集 收起 来源:within表达式

    2018-12-13

  • 编程范式:面向过程编程、面向对象编程、函数式编程、事件驱动编程、面向切面编程

    查看全部
    0 采集 收起 来源:面向切面编程

    2018-12-12

  • 1.为什么要引入AOP的编程范式

    引入AOP的编程范式去处理那些OOP不能处理的问题或不好处理的问题,例如视频中老师说的权限控制问题。又比如一个方法中要插入数据到两张表中时,这一次操作是同一个事务,要么同时失败,要么同时成功,这时是不能用面向对象(OOP)编程去实现的。

    2.AOP的好处以及适用场景是什么?

    能够减少大量的重复代码,视频中所言;又如事务控制时,我们只需要在方法上加@transaction就可以在该方法上启用事务机制,如果发生异常,那么事务会进行自动回滚。这样,我们开发人员能够更加的关注业务代码的开发,而不是事务代码的编写。

    3.AOP的两大核心是什么?

    AOP的两大核心就是分离软件系统功能性需求(核心关注点)和非功能性需求(非核心关注点),业务处理的主要流程将集中在核心关注点处。


    查看全部
    4 采集 收起 来源:本章小结

    2018-12-04

  • 使用SpringAop的注意事项

    查看全部
    0 采集 收起 来源:课程要点讲述

    2018-12-04

  • Around环绕通知

    查看全部
    0 采集 收起 来源:实现思路讲解

    2018-12-04

  • Asepct设计

    查看全部
    0 采集 收起 来源:实现思路讲解

    2018-12-04

  • Datalog注解

    查看全部
    0 采集 收起 来源:实现思路讲解

    2018-12-04

  • @Cacheable时序图

    查看全部
    0 采集 收起 来源:cachable演示

    2018-12-04

  • 缓存@Cacheable

    查看全部
    0 采集 收起 来源:cachable演示

    2018-12-04

举报

0/150
提交
取消
课程须知
本课程有一定的难度,需要同学较为熟练的掌握Spring和Spring Boot相关知识。熟练配置mysql,mongodb和maven项目。本课程将带领大家对源码进行刨析!不熟悉相关内容的同学可先学习SSM免费路径上的课程和慕课网上Spring Boot的基础课(http://www.imooc.com/learn/767)。
老师告诉你能学到什么?
让学生了解SpringAop的原理,使用,解读SpirngAop的经典代码,再通过案例加深让学生对SpirngAop的理解和掌握的程度

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!