您的位置:首页 > 编程语言 > Java开发

Spring核心之AOP(三 面向切面编程)

2019-06-19 23:35 183 查看

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、多个前置(或其他)通知的执行顺序按照通知方法名称的字母排序

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: