Welcome 微信登录

首页 / 软件开发 / JAVA / spring入门(10) 使用Aspectj进行AOP开发

spring入门(10) 使用Aspectj进行AOP开发2013-07-19 史国旭 添加类库:aspectjrt.jar和aspectjweaver.jar

添加aop schema.

定义xml元素:<aop:aspectj-autoproxy>

编写java类,并用@Aspect注解成通知

AspectJ 支持 5 种类型的通知注解:

@Before: 前置通知, 在方法执行之前执行

@After: 后置通知, 在方法执行之后执行

@AfterReturning: 返回通知, 在方法返回结果之后执行

@AfterThrowing: 异常通知, 在方法抛出异常之后

@Around: 环绕通知, 围绕着方法执行

配置成普通bean元素即可.

二、

后置通知:@After

@After("execution(* *..WelcomeService.*(..))")

public void applaud(){..}

后置通知在目标方法执行完成之后执行.一个切面aspect包含很多通知.

@After

后置通知表明目标方法执行完之后,不论是否抛异常,都会织入该通知.

@AfterReturning

方法返回后通知只在目标方法返回以后执行,若抛异常不执行.

@AfterReturning(pointcut="",returning="res")

public void xxx(Joinput jp,Object res)

在AfterReturning

通知中可接收到返回值.res即是用来接收返回值的对象.

三、

环绕通知:@Around

@Around("execution(* *..WelcomeService.*(..))")

public void around(ProceedingPointCut jp){..}

注意:可以控制目标方法是否调用,以及返回完全不同的对象,要慎用.

指定优先级:

@Aspect

@Order(0)

public class xxx{...}

加上@Order注解可以指定加入切面的优先级(先后顺序,值越小,优先级越高)