//抽象類:ArithnmeticCalulator public interface ArithnmeticCalulator { int add(int i,int j); int sub(int i,int j); int mul(int i,int j); int div(int i,int j); } //實(shí)現(xiàn)抽象類:ArithnmeticCalulator類 @Component("arithnmeticCalulator") public class ArithnmeticCalulatorImpl implements ArithnmeticCalulator { 實(shí)現(xiàn)方法省去..... } LogginAspect實(shí)現(xiàn) //把這個類聲明為一個切面,需要吧該類放入IOC容器中,在聲明一個切面 @Aspect @Component public class LogginAspect { // 定義一個方法,用于聲明切入點(diǎn)的表達(dá)式,一般在放中不需要添加其他的代碼 @Pointcut("execution(* com.wzq.spring.aop.impl.*.*(..))") public void declareJoinPointExpression() { } @Before("declareJoinPointExpression()") public void beforeMethod(JoinPoint joinPoint) { //獲取ArithnmeticCalulator的method方法 String methodName = joinPoint.getSignature().getName(); //獲取ArithnmeticCalulator的method值 List<Object> args = Arrays.asList(joinPoint.getArgs()); System.out.println("The method " + methodName + "begins" + args); } // 后置通知:在目標(biāo)方法執(zhí)行后執(zhí)行的通知,執(zhí)行的通通知 //后置通知不會返回結(jié)果 @After("declareJoinPointExpression()") public void afterMethod(JoinPoint joinPoint) { String methodName = joinPoint.getSignature().getName(); System.out.println("The method " + methodName + "ends"); } // 異常通知 @AfterThrowing(value ="declareJoinPointExpression()", throwing = "ex") public void afterThrowing(JoinPoint joinPoint, Exception ex) { String methodName = joinPoint.getSignature().getName(); System.out.println("The method " + methodName + "execution" + ex); } } XML配置 <!-- 配置bean --> <bean class="com.wzq.spring.aop.xml.ArithnmeticCalulatorImpl" id="arithnmeticCalulator"></bean> <!-- 配置切面的bean --> <bean id="logginAspect" class="com.wzq.spring.aop.xml.LogginAspect"></bean> main方法 public class Main { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml"); ArithnmeticCalulator arithnmeticCalulator = ctx .getBean(ArithnmeticCalulator.class); int result = arithnmeticCalulator.sub(6, 6); System.out.println("result:" + result); int result1=arithnmeticCalulator.div(10, 0); System.out.println(result1); } } |
|
來自: 魏祖清 > 《SpringAOP》