AOP知识应用小结

AOP(Aspect Oriented Programming),面向切面编程;基于OOP(Object Oriented Programming面向对象编程)基础之上新的编程思想;指在程序运行期间,将某段代码动态地切入到指定位置进行运行的这种编程方式,面向切面编程。
举例说明,如果说要实现计算器运行计算方法的时候我们要进行日志记录。第一,直接编写在方法内部;不推荐,因为修改维护非常麻烦。第二,我们需要想办法,在核心功能期间,自己动态加上日志。
在这里插入图片描述
有了动态代理,日志可以写的非常强大(具体到捕捉哪个方法出现了什么样的异常),且实现了解耦。
以前动态代理:写起来难,jdk默认的动态代理,如果目标对象没有实现任何接口,是无法为它创建代理对象的;
现在spring的AOP解决了两大难题:1.spring实现了AOP功能;底层就是动态代理。

  1. 2.可以利用spring一句代码都不写的去创建动态代理。3.实现简单,而且没有强制要求目标对象必须实现接口
    AOP专业术语:
    在这里插入图片描述
    使用Spring AOP要到导的包:
    在这里插入图片描述
    使用“公式”:
    在这里插入图片描述
    在这里插入图片描述
    一切就绪,开始写配置:
    1.将目标类和切面类(封装了通知方法(在目标方法执行前后执行的方法))加入到IOC容器中。2.还应该spring到底 哪个是切面类@Aspect。3.告诉spring,切面类里面的每一个方法,都是何时何地运行。
    不必new一个来取值,因为容器已经创建了一个对象,直接从容器中获取就可以了。
    记住:ioc容器中保存的是代理对象,所以要用它的接口类型,不可以通过本类找它,或者可以通过id找。(即类名的小写)
    在这里插入图片描述
    测试:
    在这里插入图片描述
    切点表达式中通配符:在这里插入图片描述
    Spring对通知方法的要求不严格:唯一要求的就是方法的参数列表一定不能乱写,通知方法是spring 利用反射调用的,每次方法调用的,每次方法调用得确定这个方法的参数表得值。参数表上的每一个参数,spring都得知道是什么,不知道的参数一定要告诉spring这是什么。@param joinPoint

我们可以在通知方法运行的时候,拿到目标方法的详细信息,只需要为通知方法的参数列表上写一个参数:JoinPoint joinPoint,封装了当前目标方法的详细信息
在这里插入图片描述
抽取可重用的切入点表达式:1.随便声明一个没有实现的返回void的空方法.2.给方法上标注@Pointcut注解
@Pointcut(“executeion(访问权限 返回值类型 方法签名)”)
Public void compoint(){};在这里插入图片描述

在这里插入图片描述
@Order(1) 使用Order改变切面顺序;数值越小级别越高。
AOP的使用场景:

  1. AOP加日志保存到数据库
  2. AOP做权限验证
  3. AOP做安全检查
  4. AOP做事务控制
    使用xml配置的AOP
    基于注解AOP步骤:
  5. 将目标类和切面类都加入到ioc容器中。@Component
  6. 告诉spring哪个是切面类。@Aspect
  7. 在切面类中使用五个通知注解来配置切面中的这些通知方法都何时何地运行。
  8. 开启基于注解的AOP功能。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值