Spring AOP 小结

1.什么是AOP?

这里引用百度百科的解释,如图

Spring AOP 小结_第1张图片

2.AOP的作用

AOP采用横向抽取机制,补充了传统纵向继承体系(OOP)无法解决的重复性代码优化(性能监视,事务管理,安全检查等),一句话概括就是:将业务逻辑和系统处理的代码(关闭连接、事务管理、日志处理等)解耦。重复性代码被抽取出来之后,维护起来更加方便。

3.AOP的实现

(1)AspectJ(一个Java实现的AOP框架),AspectJ主要采用的是编译期织入,在这个期间使用AspectJ的acj编译器(类似javac)把aspect类编译成class字节码后,在java目标类编译时织入。这种方式的缺点是过于复杂,破坏封装,需要专门的Java编译器。

(2)Spring 基于AspectJ的AOP实现(通过动态代理技术实现的 ),其实就是Spring+AspectJ的整合。以下是一个简单的demo。

 

(a)  添加Spring和AOP相关的依赖

Spring AOP 小结_第2张图片

Spring AOP 小结_第3张图片

(b)  编写接口,目标类和方法

Spring AOP 小结_第4张图片

Spring AOP 小结_第5张图片

(c)  编写配置文件,配置目标类

Spring AOP 小结_第6张图片

(d)  编写通知类和增强方法(基于XML方式实现)

Spring AOP 小结_第7张图片

(e)  配置文件中配置通知类和切面

Spring AOP 小结_第8张图片

(f)  测试

Spring AOP 小结_第9张图片

 

以下再用基于注解的方式实现AOP

(1)目标类和切面类

Spring AOP 小结_第10张图片

Spring AOP 小结_第11张图片

(2)配置文件

Spring AOP 小结_第12张图片

(3)测试

Spring AOP 小结_第13张图片

 

你可能感兴趣的:(Spring)