天天看點

AOP面向切面程式設計:AspectJ:注解開發

String resource = “AspectJapplicationContext.xml”; ApplicationContext applicationContext = new ClassPathXmlApplicationContext(resource); IAspectJService iAspectJService = (IAspectJService) applicationContext.getBean(“aspectJservice”); iAspectJService.doDestroy(); String doFirst = iAspectJService.doFirst(); System.out.println(doFirst);

AspectJapplicationContext.xml配置:

// 前置通知 public void before() { System.out.println(“AspectJ前置通知”); } // 前置通知,帶參數(以下任何通知都能帶參數,不一一列舉) public void before(JoinPoint jp) { System.out.println(“AspectJ前置通知:JP=” + jp); } // 後置通知 public void afterReturning(Object ret) { System.out.println(“AspectJ後置通知:傳回結果ret=” + ret); System.out.println("----------------------"); } // 環繞通知 public Object around(ProceedingJoinPoint pjp) throws Throwable { System.out.println(“AspectJ環繞通知:目标方法執行之前通知”); Object proceed = pjp.proceed(); System.out.println(“AspectJ環繞通知:目标方法執行之後通知”); if (proceed != null) { proceed = ((String) proceed).toUpperCase(); } return proceed; } // 異常通知 public void afterThrowing() { System.out.println(“AspectJ異常通知”); } // 異常通知:帶參數 public void afterThrowing(Exception ex) { System.out.println(“AspectJ異常通知:ex=” + ex); } // 最終通知 public void after() { System.out.println(“AspectJ最終通知”); }