Spring核心之AOP(三 面向切面编程)
1、代理模式
静态代理:代理类已经写出来了,实实在在的存在的。
动态代理:(Spring采用的)运行期间生成的,内存中的类。
基于接口的动态代理:JDK代理,Proxy。编译时快,运行时慢。
基于子类的动态代理:CGLIB。编译时慢,运行时快
导入cglib的jar包:
Spring框架用的代理:目标类实现了某个接口,用JDK代理;目标类没有实现任何接口,用CGLIB代理。
2、通过一个事务管理案例,理解什么是AOP
3、AOP编程思想
把切面问题在运行时织入到业务代码中,这就是AOP编程
专注于业务代码,不考虑切面问题;
切面问题都写到公用的代码;
运行期间把切面公用代码织入到业务代码中(核心技术:动态代理);
4、Spring中AOP的概念
连接点(Joinpoint):连接点指类中的方法。
切入点(Pointcut):切入点指被抽取了共性功能的方法。
通知(Advice):这些被抽取出来组成独立代码逻辑的共性功能称为通知。
通知类别:前面、后面、返回后、最终、异常、环绕。
引入(Introduction)
目标对象(Target Object):目标对象指包含切入点的类对象
AOP代理(AOP Proxy)
织入(Weaving)
切面(Aspect):指被抽取了共性功能的方法(切入点)与被抽取了共性功能(通知)对应的绑定关系。关心的某一方面(比如:事务、日志、效率方面)
AOP开发流程:
5、基于XML的AOP
5.1搭建AOP的Spring环境
基于Spring的IoC核心的。
a、拷贝必要的AOPjar包
spring-aop-3.2.0.RELEASE.jar
spring-aspects-3.2.0.RELEASE.jar(对aspectJ的实现)
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
b、编写核心业务代码(制定连接点)
c、通知制作:切面公用代码
d、Spring配置文件
5.2切入点表达式
5.3切入点的定义形式
逐级应用范围放大
方式一:
特点:复用性差
方式二:
特点:针对该切面具备复用性
方式三:
特点:多个切面共用
5.4通知类型
帮助理解的(实际上就是一个环绕通知代码)
before:
after-returning:
after-throwing:
after:
环绕通知:around
6、注意:多个前面的通知的执行顺序
7、获取原始方法的参数和返回值
原始方法前面执行的通知:
before around(before)
使用场景:在原始方法执行前,利用前置通知获取参数,进行一些判断、校验等功能。
原始方法执行后的通知:
after-returning around(afeter)
使用场景:在原始方法执行后,利用后置通知获取原始方法的返回值,进行一些功能上的改变。
after-returning获取返回值:
通知:
around获取返回值:
通知:
在通知中获取
3ff7
产生的异常:
after-throwing
8、SPring中使用注解配置AOP
a、在Spring配置文件中增加以下内容
b、常用注解
@Aspect:指定切面
@Before
@After
@AfterReturning
@AfterThrowing
@Around
c、多个前置(或其他)通知的执行顺序按照通知方法名称的字母排序
- 【Spring 核心】AOP 面向切面编程
- Spring核心AOP(面向切面编程)总结
- Spring核心概念<二>:AOP面向切面编程
- 详解Spring面向切面编程(AOP)三种实现
- Spring之注解实现aop(面向切面编程)
- 配置Spring AOP面向切面编程
- Spring之注解实现aop(面向切面编程)
- Spring学习之深入AOP面向切面编程
- spring之AOP(面向切面编程)
- Spring之注解实现aop(面向切面编程)
- Spring AOP:面向切面编程
- 《Spring In action》学习笔记——AOP(面向切面编程)
- Spring学习(8)--AOP(面向切面编程)基础
- Spring——aop(面向切面编程)
- Spring——AOP(面向切面编程)@AspectJ注解方式
- Spring面向切面编程(AOP)
- Spring AOP面向切面编程的实现
- 面向切面编程(如Spring AOP)的一些基本概念
- Spring-AOP面向切面编程
- Spring4第四讲学习笔记,AOP面向切面编程