首页 / 软件开发 / 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注解可以指定加入切面的优先级(先后顺序,值越小,优先级越高)