1. JDK动态代理
代理类在程序运行时创建的代理方式。这种情况下,代理类并不是在Java代码中定义的,而是在运行时根据我们在Java代码中的“指示”动态生成的。
分类:
①JDK动态代理(应用场景:目标对象实现了接口)
②CGLIB动态代理(应用场景:目标对象没有实现接口)
2. CGLIB动态代理
(1) JDK动态代理和CGLIB动态代理的应用场景?
目标对象没有实现接口
(2) 使用CGLIB动态代理的实现步骤?
3. AOP介绍
(1) 你是如何理解AOP的?
面向切面编程,就是将交叉业务逻辑封装成切面,利用AOP的功能将切面织入到主业务逻辑中,交叉业务逻辑是指通用的、与主业务逻辑无关的代码。
(2) 使用AOP编程思想有什么好处?
使主业务逻辑清晰
4. 基于Schema-based方式之前置通知
(1) 如何搭建AOP编程环境?
导入两个jar包(aop/aopalliance)
(2) 如何创建前置通知?
5. 基于Schema-based方式之后置通知
(1) 在spring配置文件中如何实现通知对目标类增强?
6. 在spring配置文件中如何实现通知对目标类增强?
(1) 如何创建环绕通知?环绕通知通过哪个对象调用目标方法?
7. 基于Schema-based方式之异常通知
(1) 如何创建异常通知?异常通知能否获得异常信息,需要如何配置?
8. 基于AspectJ方式之注解方式前置通知
(1) 描述Spring、AspectJ和AOP三者之间的关系?
Spring、AspectJ都实现了AOP的功能。AspectJ的实现方式更为简洁方便,还支持注解式开发,Spring将AspectJ的对于AOP的实现引入到自己的框架中。
(2) AspectJ支持的通知常见有哪些?
前置通知、后置通知、环绕通知、异常通知、最终通知
9. 基于AspectJ方式之注解方式后置通知
(1) 基于AspectJ方式之注解方式后置通知
(2) 后置通知能否获得目标方法返回值,需要如何配置?
10. 基于AspectJ方式之注解方式环绕通知
(1) 环绕通知能否调用目标方法,通过哪个对象?
(2) 环绕通知能否获得目标方法返回值,需要如何配置?
11. 基于AspectJ方式之注解方式异常通知
(1) 如果目标类不出现异常,异常通知会否执行?
不会
(2) 异常通知能否获得异常信息,如果可以,需要如何获取?
12. 基于AspectJ方式之注解方式最终通知
(1) 最终通知何时触发执行?
无论出现何种异常都会执行
13. 基于AspectJ方式之配置方式前置通知
(1) 基于AspectJ方式之配置方式前置通知环境如何搭建?
(2) <aop:before>标签中有哪些常用的属性,分别是什么含义?
Method:目标方法。Pointcut-ref:切入点
14. 基于AspectJ方式之配置方式带参通知方法的执行
(1) 如何设定带参方法为指定类型的通知?
(2) JointPoint该对象获取到的是什么?
切入点表达式
15. 基于AspectJ方式之配置方式后置通知
(1) 基于AspectJ方式之配置方式后置通知环境如何搭建?
(2) 后置通知标签中有哪些常用的属性,分别是什么含义?
Method:目标方法(参数全限定路径名)。Pointcut-ref:切入点。Returning:变量名
16. 基于AspectJ方式之配置方式环绕通知
(1) 基于AspectJ方式之配置方式环绕通知通过哪个对象调用目标方法?
(2) 环绕通知标签中有哪些常用的属性,分别是什么含义?
Method:目标方法。Pointcut-ref:切入点
17. 基于AspectJ方式之配置方式异常通知
(1) 基于AspectJ方式之配置方式异常通知通过哪个属性获取异常信息?
(2) 异常通知标签中有哪些常用的属性,分别是什么含义?
Method:目标方法。Pointcut-ref:切入点。Throwing:获取异常信息
18. 基于AspectJ方式之配置方式最终通知
(1) 最终通知何时被触发执行?
无论出现何种异常都会执行