1.使用Aspectj进行AOP开发
使用aspectjs的操作步骤:
1)添加类库:aspectjrt.jar和aspectjweaver.jar
2)添加aop schema.
3)定义xml元素:<aop:aspectj-autoproxy>
4)编写java类,并用@Aspect注解成通知
AspectJ支持 5 种类型的通知注解:
@Before: 前置通知, 在方法执行之前执行
@After: 后置通知, 在方法执行之后执行
@AfterReturning: 返回通知, 在方法返回结果之后执行
@AfterThrowing: 异常通知, 在方法抛出异常之后
@Around: 环绕通知, 围绕着方法执行
配置成普通bean元素即可;下面简单介绍这几种通知的术语和使用方式,后面会通过案例分析的方式来剖解aspectjs通知编程。
前置通知:@Before
@Aspect
public class AudienceAdvice {
@Before("execution(* WelcomeService.*(..))")
public void takeSeats(){..}
@Before("execution(* WelcomeService.*(..))")
public void turnOffCellphone(JoinPoint jp){..}
JoinPoint参数可访问连接点细节,切入方法名和参数等.
jp.getTarget()//目标对象
jp.getThis()//当前的代理对象
jp.getArgs();//方法调用参数
jp.getSignature().getName()//方法签名
后置通知:@After
@After("execution(* *..WelcomeService.*(..))")
public void applaud(){..}
后置通知在目标方法执行完成之后执行.一个切面aspect包含很多通知.后置通知表明目标方法执行完之后,不论是否抛异常,都会织入该通知.
返回通知:@AfterReturning
方法返回后通知只在目标方法返回以后执行,若抛异常不执行.
@AfterReturning(pointcut="",returning="res")
public void xxx(Joinput jp,Object res)
在A