切点、切面:@Aspect、@PointCut

@Aspect  定义一个切面
public class LogAspect {
 // Service层切点   切点,所有被注解ServiceLog标注的方法,
 @Pointcut("@annotation(com.xe.demo.common.annotation.ServiceLog)") public void serviceAspect() { }
 // 增强,在serviceAspect执行完并且抛出异常执行
@AfterThrowing(pointcut = "serviceAspect()", throwing = "e")
public void doAfterThrowing(JoinPoint joinPoint, Throwable e) {
getLog(joinPoint, e);
}
}

举个例子:
一个类(Show)里面有一个表演(display)的方法,在表演之前,应该有致辞(say)的方法,在表演之后,应该有鼓掌(hand)的方法。
为了高内聚低耦合,表演的方法应该单独封装在一个类里面,致辞和鼓掌的方法应该另外封装,但在调用时必须按照顺序来调用执行。这时候就需要设置切面和切点了!

猜你喜欢

转载自www.cnblogs.com/xfwbing/p/9442678.html
今日推荐