第七章 Spring AOP基础

1 什么是 AOP?什么是Spring AOP?
AOP是Aspect Oriented Programming的简称,即面向切面编程。它是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。可以运用在诸如性能监测、访问控制、事务管理、日志记录等场合。

2 解释以下AOP术语:
(1) 连接点 Joinpoint
一个类或一段程序代码拥有一些具有边界性质的特定点。
(2) 切点 Pointcut
AOP通过切点定位到特定的连接点。
注:切点不含方位信息。
(3) 增强 Advice
织入目标类连接点上的一段程序代码。包括:描述一段和程序代码+执行点的方位。
(4) 目标对象 Target
增强逻辑的织入目标类。
(5) 引介 Introduction
一种特殊的增强:为类添加一些属性和方法。
(6) 织入 Weaving
将增强添加到目标类的具体连接点上的过程。
共有三种织入方式:
1 编译期织入(AspectJ)
2 类装载期织入(AspectJ)
3 动态代理(运行期)织入(Spring)
(7) 代理 Proxy
一个类被AOP织入增强后,就产生了一个结果类。
(8) 切面 Aspect
切面由切点和增强组成。

3 什么是代理模式?
是一种设计模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。

4 静态代理和动态代理有什么区别?
https://blog.csdn.net/hejingyuan6/article/details/36203505

5 Spring AOP使用的是哪种设计模式?
代理模式。

6 JDK动态代理和CGLib动态代理有什么区别?
(1) JDK只能为接口创建代理实例。而CGLib可以为没有接口的类创建动态实例。
(2) JDK的实现:通过Java的反射机制产生被代理接口的新的匿名实现类。
CGLib的实现:通过CGLib继承要被动态代理的类,重写父类方法。
(3)CGLib:通过字节码底层继承要代理类来实现。
(4)速度对比:
CGLib所创建的动态代理对象的性能比jdk性能高;
但JDK创建对象更快;
因此,单例作用域的代理对象比较适合CGLib。

7 试编程,比较JDK和CGLib的速度,是否真的如教材P230所说。

8 增强有哪些类型?分别解释和举例。
(1)前置增强
(2)后置增强
(3)环绕增强
(4)异常抛出增强
(5)引介增强

9 切点有哪些类型?
(1)静态方法切点
(2)动态方法切点
(3)注解切点
(4)表达式切点
(5)流程切点
(6)复合切点

10 切面有哪些类型?
(1)一般切面
(2)切点切面
(3) 引介切面

11 切点切面(pointcutAdvisor)有哪些实现类?
(1) DefaultPointcutAdvisor
(2) NameMatchMethodPointcutAdvisor
(3) RegexpMethodPointcutAdvisor
(4) StaticMethodMatcherPointcutAdvisor
(5) AspectJExpressionPointcutAdvisor
(6) AspectJPointcutAdvisor

12 编程:根据不同的切点类型,编写不同的切面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值