Spring AOP教程

面向切面编程(AOP)是对面向对象编程(OOP)的补充,它也提供了模块化。但AOP的关键单元是切面而不是类。

AOP将程序逻辑划分为不同的部分(称为关注点)。它通过横切关注点来增加模块化。

横切关注点是可以影响整个应用程序并应尽可能集中在代码中的关注点,例如事务管理、身份验证、日志记录、安全等。

为什么使用AOP?
它提供了一种可插拔的方式,在实际逻辑之前、之后或之周围添加额外的关注点。假设有一个类中的10个方法如下所示:

class A{  
public void m1(){...}  
public void m2(){...}  
public void m3(){...}  
public void m4(){...}  
public void m5(){...}  
public void n1(){...}  
public void n2(){...}  
public void p1(){...}  
public void p2(){...}  
public void p3(){...}  
}  

有5个以m开头的方法,2个以n开头的方法和3个以p开头的方法。

理解场景:我必须在调用以m开头的方法之后维护日志并发送通知。

没有使用AOP时:我们可以从以m开头的方法中调用(维护日志和发送通知的)方法。在这种情况下,我们需要在所有5个方法中编写代码。

但是,如果客户说在未来,我不需要发送通知,你需要更改所有的方法。这将导致维护问题。

使用AOP的解决方案:我们不需要从方法中调用方法。现在,我们可以在类的方法中定义额外的关注点,比如维护日志、发送通知等。它的入口在xml文件中给出。

将来,如果客户说要删除通知功能,我们只需要在xml文件中进行更改。因此,在AOP中维护更容易。

在哪里使用AOP?

AOP主要用于以下情况:

1.提供声明式企业服务,如声明式事务管理。
2.允许用户实现自定义切面。

AOP概念和术语

AOP概念和术语如下:

连接点(Join point):程序中的任何点,如方法执行、异常处理、字段访问等。Spring仅支持方法执行连接点。

通知(Advice):表示切面在特定连接点处采取的动作。有不同类型的通知:

1.前置通知(Before Advice):在连接点之前执行。
2.后置通知(After Returning Advice):在连接点正常完成后执行。
3.异常通知(After Throwing Advice):在方法通过抛出异常退出时执行。
4.最终通知(After (finally) Advice):无论连接点正常退出还是异常退出,都在连接点之后执行。
5.环绕通知(Around Advice):在连接点之前和之后执行。
6.切点(Pointcut):是AOP的表达式语言,用于匹配连接点。

引入(Introduction):意味着向类型引入附加方法和字段。它允许您向任何被建议对象引入新接口。

目标对象(Target Object):被一个或多个切面建议的对象。在Spring中也称为代理对象,因为Spring AOP是使用运行时代理实现的。

切面(Aspect):是包含通知、连接点等的类。

拦截器(Interceptor):是仅包含一个通知的切面。

AOP代理(AOP Proxy):用于实现切面合同,由AOP框架创建。在Spring框架中,它将是JDK动态代理或CGLIB代理。

织入(Weaving):是将切面与其他应用程序类型或对象链接以创建建议对象的过程。织入可以在编译时、加载时或运行时进行。Spring AOP在运行时执行织入。

AOP实现

AOP实现由以下提供:

1.AspectJ
2.Spring AOP
3.JBoss AOP

Spring AOP

Spring AOP可以通过以下3种方式使用。但是,广泛使用的方法是Spring AspectJ注解样式。使用Spring AOP的3种方式如下:

通过Spring1.2旧样式(DTD基础)(也支持Spring3)
通过AspectJ注解样式
通过Spring XML配置样式(基于模式)

标签: spring, Spring教程, Spring技术, Spring语言学习, Spring学习教程, Spring下载, Spring框架, Spring框架入门, Spring框架教程, Spring框架高级教程, Spring面试题, Spring笔试题, Spring编程思想