夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評論 :: 0 Trackbacks
          Before Advice:
          package com.hwp.aop.adviceDemo;

          import java.lang.reflect.Method;

          import org.springframework.aop.MethodBeforeAdvice;

          public class BeforeAdviceDemo implements MethodBeforeAdvice {

              
          public void before(Method method, Object[] args, Object target)
                      
          throws Throwable {
                  System.out.println(
          "在方法運行前,先運行");
              }

              
          }

          After Advice:
          package com.hwp.aop.adviceDemo;

          import java.lang.reflect.Method;

          import org.springframework.aop.AfterReturningAdvice;

          public class AfterAdviceDemo implements AfterReturningAdvice{

              
          public void afterReturning(Object arg0, Method arg1, Object[] arg2,
                      Object arg3) 
          throws Throwable {
                  System.out.println(
          "方法執行后.");
                  
              }

              
          }

          Round Advice:
          package com.hwp.aop.adviceDemo;

          import org.aopalliance.intercept.MethodInterceptor;
          import org.aopalliance.intercept.MethodInvocation;

          public class AroundAdviceDemo implements MethodInterceptor {

              
          public Object invoke(MethodInvocation arg0) throws Throwable {
                  System.out.println(
          "在round方法里,方法開始前..");
                  Object result 
          = null;
                  
          try {
                      result 
          = arg0.proceed();
                  }
           finally {
                      System.out.println(
          "在round方法里,方法結束后");
                  }

                  
          return result;
              }


          }

          Throw Advice:
          package com.hwp.aop.adviceDemo;

          import java.lang.reflect.Method;

          import org.springframework.aop.ThrowsAdvice;

          public class ThowAdviceDemo implements ThrowsAdvice {
              
          public void afterThrowing(Method method, Object[] args, Object target,
                      Throwable subclass) 
          {
                  System.out.println(
          "異常拋出后..");
              }


          }

          beans.xml:
          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://www.springframework.org/schema/beans"
              xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation
          ="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"
          >
              
          <bean id="logBeforeAdvice"
                  class
          ="com.hwp.aop.adviceDemo.BeforeAdviceDemo" />
              
          <bean id="logAfterAdvice"
                  class
          ="com.hwp.aop.adviceDemo.AfterAdviceDemo" />
              
          <bean id="logRoundAdvice"
                  class
          ="com.hwp.aop.adviceDemo.AroundAdviceDemo" />
              
          <bean id="throwAdvice"
                  class
          ="com.hwp.aop.adviceDemo.ThowAdviceDemo" />
              
          <bean id="helloSpeaker" class="com.hwp.aop.adviceDemo.HelloSpeaker" />
              
          <bean id="helloProxy"
                  class
          ="org.springframework.aop.framework.ProxyFactoryBean">
                  
          <property name="proxyInterfaces"
                      value
          ="com.hwp.aop.adviceDemo.IHello" />
                  
          <property name="target" ref="helloSpeaker" />
                  
          <property name="interceptorNames">
                      
          <list>
                          
          <value>logBeforeAdvice</value>
                          
          <value>logAfterAdvice</value>
                          
          <value>logRoundAdvice</value>
                          
          <value>throwAdvice</value>
                      
          </list>
                  
          </property>
              
          </bean>
          </beans>
          Demo:
          package com.hwp.aop.adviceDemo;

          import org.springframework.context.ApplicationContext;
          import org.springframework.context.support.ClassPathXmlApplicationContext;

          public class SpringAOPDemo {
              
          public static void main(String[] args){
                  ApplicationContext context 
          = 
                      
          new ClassPathXmlApplicationContext("beans-beforeAdvice.xml");
                  IHello helloProxy 
          = (IHello) context.getBean("helloProxy");
                  
          try{
                      helloProxy.hello(
          "惠萬鵬");
                  }
          catch(Exception e){
                      
          //e.printStackTrace();
                  }

              }

          }

          收工....

          posted on 2008-04-13 14:37 HUIKK 閱讀(949) 評論(0)  編輯  收藏 所屬分類: Spring
          主站蜘蛛池模板: 禹州市| 双流县| 合山市| 红安县| 德庆县| 涟水县| 乡宁县| 阿拉善盟| 辰溪县| 陈巴尔虎旗| 清苑县| 仁化县| 延川县| 集贤县| 东港市| 许昌县| 布拖县| 旺苍县| 南乐县| 南澳县| 邹城市| 东山县| 桦甸市| 改则县| 兴宁市| 莱西市| 松阳县| 环江| 中山市| 巴林右旗| 县级市| 仪陇县| 富锦市| 靖远县| 古丈县| 三穗县| 阿拉善右旗| 宁河县| 绥滨县| 林甸县| 铜陵市|