Spring的AOP简介

本文介绍了AOP(面向切面编程),对比了其与OOP的不同,阐述了静态和动态AOP框架及相关技术。还介绍了AOP的基本术语,如切面、连接点等。在Spring AOP实现方面,说明了需编写的部分及xml配置。此外,讲解了增强处理及其顺序,以及切入点的定义方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、什么是AOP

AOP是面向切面编程,OOP是面向对象编程。

面向对象编程将软件分解成不同层次的方面,而面向切面编程是将软件的运行过程分解为不同的切面。也就是说面向对象编程是静态的思想,而面向切面编程是更加动态的思想。

假设方法1,方法2和方法3都有共同的代码部分,将这些共同部分抽取出来形成新的方法。再将方法1、2、3分别调用这个新方法。但是如果这新的方法部分由于需求的改变而进行了改动,则之前的方法也需要显式地进行调用。如果想要它们自动地进行调用这新的方法,就可以使用AOP思想进行编程。

AOP分为静态AOP框架和动态AOP框架两种。静态AOP框架是指利用AspectJ技术,在编译时对java代码进行aop增强处理,从而形成新的源码。动态AOP是指利用代理技术,包括jdk的动态代理和cglib代理,在运行时对目标对象进行增强处理。jdk的动态代理针对的是实现了接口的目标对象的代理,cglib代理针对的是没有实现接口的目标对象的代理。一般而言,静态AOP性能更强,spring的动态aop则性能较差。

AOP的基本术语有:切面,连接点,增强处理,切入点。
切面是将增强处理组织起来的集合,增强处理在切面中得到定义。
连接点是程序执行过程中明确的点。在spring的aop中,连接点总是方法的调用。
增强处理就是在在连接点中进行的处理,主要有before,around和after。
可以进行增强处理的连接点就叫切入点

实现spring AOP时,需要编写的部分只有业务方法,切入点以及增强方法。

为了让切面能自动对相应的bean进行增强,需要在xml文件中进行配置。

二、增强处理及其顺序:


@Aspect
被@Aspect注释过的java类的bean则成为切面。但在spring容器里,对这个切面bean的配置和对普通bean进行配置没有任何区别。


@Before
在目标对象运行之前运行。


@AfterThrowing
主要用于处理程序中未处理的异常。


@After
无论方法正常结束或异常结束,After增强处理都会执行。


@Around
可以安排目标对象的代理执行的时间,并在目标对象之前以及之后进行增强处理。


当同一个切面的切入点相同时,四个增强处理的执行顺序为:

@Around>@Before>@After>@AfteRreturing

使用@Order注解可以控制同一个切入点不同切面的执行顺序。

定义切入点可以用类似构造方法的方式。使用@Pointcut来修饰切入点表达式,同时第二行添加一个返回值为void的方法。其中方法名即为此切入点的定义名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值