利用代码分别实现jdk动态代理和cglib动态代理_070-JDK/CGLIB动态代理、基于Schema-based方式/AspectJ方式的配置方式...

1. JDK动态代理

代理类在程序运行时创建的代理方式。这种情况下,代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的。

分类:

①JDK动态代理(应用场景:目标对象实现了接口)

②CGLIB动态代理(应用场景:目标对象没有实现接口)

2. CGLIB动态代理

(1) JDK动态代理和CGLIB动态代理的应用场景?

目标对象没有实现接口

(2) 使用CGLIB动态代理的实现步骤?

cb1337de97cead558ce0a6fbc8f32113.png

3. AOP介绍

(1) 你是如何理解AOP的?

面向切面编程,就是将交叉业务逻辑封装成切面,利用AOP的功能将切面织入到主业务逻辑中,交叉业务逻辑是指通用的、与主业务逻辑无关的代码。

(2) 使用AOP编程思想有什么好处?

使主业务逻辑清晰

4. 基于Schema-based方式之前置通知

(1) 如何搭建AOP编程环境?

导入两个jar包(aop/aopalliance)

(2) 如何创建前置通知?

83c05d390389f22074bf70a36965907f.png

1b53c282cad969836f1ac0ab9a446dca.png

b48842c5d13b946fc0abecc5a5871e19.png

5. 基于Schema-based方式之后置通知

(1) 在spring配置文件中如何实现通知对目标类增强?

160d36abc0cb1aca6e7ffacff7114e77.png

6. 在spring配置文件中如何实现通知对目标类增强?

(1) 如何创建环绕通知?环绕通知通过哪个对象调用目标方法?

79ae49b07a5cc614419f20cc3ba4d356.png

7. 基于Schema-based方式之异常通知

(1) 如何创建异常通知?异常通知能否获得异常信息,需要如何配置?

2390477bf5341cad0a444996ddbbe2f4.png

fcbab0e67d90e9e5a971680ebbb98464.png

277a41eff4384ecb9df6d9c0a34c7a90.png

8. 基于AspectJ方式之注解方式前置通知

(1) 描述Spring、AspectJ和AOP三者之间的关系?

Spring、AspectJ都实现了AOP的功能。AspectJ的实现方式更为简洁方便,还支持注解式开发,Spring将AspectJ的对于AOP的实现引入到自己的框架中。

(2) AspectJ支持的通知常见有哪些?

前置通知、后置通知、环绕通知、异常通知、最终通知

9. 基于AspectJ方式之注解方式后置通知

(1) 基于AspectJ方式之注解方式后置通知

(2) 后置通知能否获得目标方法返回值,需要如何配置?

fe69b05665b837c5c5d43ac806fcc468.png

10. 基于AspectJ方式之注解方式环绕通知

(1) 环绕通知能否调用目标方法,通过哪个对象?

(2) 环绕通知能否获得目标方法返回值,需要如何配置?

09b37779c90776ce91e701fcfe9dbce8.png

11. 基于AspectJ方式之注解方式异常通知

(1) 如果目标类不出现异常,异常通知会否执行?

不会

(2) 异常通知能否获得异常信息,如果可以,需要如何获取?

c3a345de1f55a6bee8143e9983565f11.png

12. 基于AspectJ方式之注解方式最终通知

(1) 最终通知何时触发执行?

无论出现何种异常都会执行

13. 基于AspectJ方式之配置方式前置通知

(1) 基于AspectJ方式之配置方式前置通知环境如何搭建?

92b9c01b54c6270235ec21f9f00e50ed.png

(2) <aop:before>标签中有哪些常用的属性,分别是什么含义?

Method:目标方法。Pointcut-ref:切入点

14. 基于AspectJ方式之配置方式带参通知方法的执行

(1) 如何设定带参方法为指定类型的通知?

302054f048754baba09348f8bcebb795.png

f7736340cd2f1eb841eb95eb87d189b2.png

(2) JointPoint该对象获取到的是什么?

切入点表达式

15. 基于AspectJ方式之配置方式后置通知

(1) 基于AspectJ方式之配置方式后置通知环境如何搭建?

6514f21b4ded928a8dc5850a5ec021aa.png

104c846f5e6445b048ca0028c85ea029.png

9f258ded62e89df8b66b31dd959f3447.png

(2) 后置通知标签中有哪些常用的属性,分别是什么含义?

Method:目标方法(参数全限定路径名)。Pointcut-ref:切入点。Returning:变量名

16. 基于AspectJ方式之配置方式环绕通知

(1) 基于AspectJ方式之配置方式环绕通知通过哪个对象调用目标方法?

16b9e690c4b237f2d260aee3a92a769a.png

(2) 环绕通知标签中有哪些常用的属性,分别是什么含义?

Method:目标方法。Pointcut-ref:切入点

17. 基于AspectJ方式之配置方式异常通知

(1) 基于AspectJ方式之配置方式异常通知通过哪个属性获取异常信息?

c0f13e9e06b5988b17f8ade454266398.png

(2) 异常通知标签中有哪些常用的属性,分别是什么含义?

Method:目标方法。Pointcut-ref:切入点。Throwing:获取异常信息

18. 基于AspectJ方式之配置方式最终通知

(1) 最终通知何时被触发执行?

无论出现何种异常都会执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值