AOP(Aspect Oriented Programming)

不使用AOP的解决方法

静态代理

纵向抽取机制解决拓展功能。

AOP(Aspect Oriented Programming)_第1张图片

使用AOP

动态代理

1.有接口的情况(JDK代理)

AOP(Aspect Oriented Programming)_第2张图片
AOP(Aspect Oriented Programming)_第3张图片

2.无接口的方法(CGLIB代理)

AOP(Aspect Oriented Programming)_第4张图片
AOP(Aspect Oriented Programming)_第5张图片

术语

AOP(Aspect Oriented Programming)_第6张图片
AOP(Aspect Oriented Programming)_第7张图片

.Spring里面进行aop操作,使用aspectj实现

(1)aspectj不是spring一部分,和spring一起使用进行aop操作

(2)Spring2.0以后新增了对AspectJ支持

使用aspectj实现aop有两种方式

(1)基于aspect的配置

(2)基于aspectj的注解方法

AOP(Aspect Oriented Programming)_第8张图片

spring2.0后才引用了AspectJ(xml或者annotation来实现)

xml

.使用表达式配置切入点

AOP(Aspect Oriented Programming)_第9张图片

.Aspectj的AOP操作

AOP(Aspect Oriented Programming)_第10张图片


AOP(Aspect Oriented Programming)_第11张图片

如果是环绕通知的增强类需要像如下代码一样

AOP(Aspect Oriented Programming)_第12张图片

annotation

AOP(Aspect Oriented Programming)_第13张图片
AOP(Aspect Oriented Programming)_第14张图片

ProxyFactoryBean

AOP(Aspect Oriented Programming)_第15张图片
AOP(Aspect Oriented Programming)_第16张图片
AOP(Aspect Oriented Programming)_第17张图片

你可能感兴趣的:(AOP(Aspect Oriented Programming))