Spring AOP原理及使用,面试必备

a) 什么是AOP?

AOP(Aspect Oriented Programming),也就是面向切面编程,是对面向对象编程OOP的一种补充;通过“横切”技术剖解开封装的对象内部,把那些公共的行为封装到一个可重用模块,称为“切面”。这样的话,就可以通过切面编写一些与业务无关的逻辑,减少代码的重复,降低模块之间的耦合度,便于开发和维护。常用的场景有日志、事务、权限控制。

AOP底层原理是代理和反射;
代理有静态代理(用得少)和动态代理;
动态代理有jdk代理和cglib代理,jdk的局限是被代理的类必须实现了接口,cglib代理底层基于ASM字节码的,所以效率较高。Spring中这两种都有使用。

b) AOP关键术语

 切面:通知和切点的结合,通知和切点共同定义了关于切面的全部内容——它是什么,在何时和何处完成其功能。被模块化的特殊对象。切面类是被我们抽取出来的公共业务逻辑;如日之类。

 通知:定义了切面方法什么时候使用;

 连接点:程序中任何可以插入切面的一个点。也就是说,程序里的任何一个方法调用甚至是属性修改,都可以看出是连接点;

 切点:需要我们切面处理的方法,被称为切点;类比:连接点相当于数据库中的记录,切点相当于查询条件

 织入、引入(给已有的类添加方法)

c) 通知类型

Before、After、After-Throwing、After-Returning、Arround
前置通知、后置通知、环绕通知、异常通知、最终通知

d) AOP使用场景举例

日志、事务

e) AOP实现方式

 经典代理:说白了,自己编写代码利用动态代理实现,

①. 通过实现MethodBeforeAdvice,AfterReturningAdvice,ThrowsAdvice等来编写一个自己的切面类
②. 利用DefaultPointcutAdvisor来组织切点。
③. 通过ProxyFactoryBean来定义配置切面。
 基于XML的: 用到aop:config(aop配置根节点)、aop:aspect(定义切面)、aop:pointcut(定义切点)、aop:advisor(组合切点和切面的)等标签。
 基于注解:需要配置aop:aspectj-autoproxy,然后使用@Aspect,@PointCut,@Before,@After….等注解。

f) Spring AOP的粒度

Spring AOP的粒度只能到方法级别,不能拦截对象字段的修改

**

基本使用情况

**
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值