简单AOP实现过程
?切面類實現:
@Aspect public class LogAspects {//抽取公共的切入點表達式//1、本類引用//2、其他的切面引用@Pointcut("execution(public int com.atguigu.aop.MathCalculator.*(..))")public void pointCut(){};//@Before在目標方法之前切入;切入點表達式(指定在哪個方法切入)@Before("pointCut()")public void logStart(JoinPoint joinPoint){Object[] args = joinPoint.getArgs();System.out.println(""+joinPoint.getSignature().getName()+"運行。。。@Before:參數列表是:{"+Arrays.asList(args)+"}");}@After("com.atguigu.aop.LogAspects.pointCut()")public void logEnd(JoinPoint joinPoint){System.out.println(""+joinPoint.getSignature().getName()+"結束。。。@After");}//JoinPoint一定要出現在參數表的第一位@AfterReturning(value="pointCut()",returning="result")public void logReturn(JoinPoint joinPoint,Object result){System.out.println(""+joinPoint.getSignature().getName()+"正常返回。。。@AfterReturning:運行結果:{"+result+"}");}@AfterThrowing(value="pointCut()",throwing="exception")public void logException(JoinPoint joinPoint,Exception exception){System.out.println(""+joinPoint.getSignature().getName()+"異常。。。異常信息:{"+exception+"}");}}業務類實現:
public class MathCalculator {public int div(int i,int j){System.out.println("MathCalculator...div...");return i/j; }}TIP:在配置類上加@EnableAspectJAutoProxy 開啟切面功能,將業務類和切面類都得注入IOC容器中。
總結
- 上一篇: Spring注解 (更新中)
- 下一篇: PostProcessor