posts - 431,  comments - 344,  trackbacks - 0

          接口
          package com.rain.bean;

          public interface Bean {
           public void theMethod();
          }

          JavaBean
          package com.rain.bean;

          public class BeanImpl implements Bean {

           public void theMethod() {
            // TODO Auto-generated method stub
            System.out.println(this.getClass().getName()+"."+new Exception().getStackTrace()[0].getMethodName()+"()"+"Says Hello!");
           }
          }

          MethodBeforeAdvice
          package com.rain.bean;

          import Java.lang.reflect.Method;
          import org.springframework.aop.MethodBeforeAdvice;

          public class TestBeforeAdvice implements MethodBeforeAdvice {

           public void before(Method arg0, Object[] arg1, Object arg2)
             throws Throwable {
            // TODO Auto-generated method stub
            System.out.println("Hello world! (by "+this.getClass().getName()+")");
           }
          }

          applicationContext.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "

          <beans>
          <!--CONFIG-->
             <bean id="bean" class="org.springframework.aop.framework.ProxyFactoryBean">
               <property name="proxyInterfaces">
                 <value>com.rain.bean.Bean</value>
               </property>
               <property name="target">
                 <ref local="beanTarget"/>
               </property>
               <property name="interceptorNames">
                 <list>
                   <value>theAdvisor</value>
                 </list>
               </property>
             </bean>
          <!--CLASS-->
             <bean id="beanTarget" class="com.rain.bean.BeanImpl"></bean>
          <!--ADVISOR-->
             <bean id="theAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
               <property name="advice">
                 <ref local="theBeforeAdvice"/>
               </property>
               <property name="pattern">
                 <value>com\.rain\.bean\.Bean\.theMethod</value>
               </property>
             </bean>
          <!--ADVICE-->
             <bean id="theBeforeAdvice" class="com.rain.bean.TestBeforeAdvice"></bean>
          </beans>

          Test
          package com.rain.test;

          import org.springframework.context.ApplicationContext;
          import org.springframework.context.support.ClassPathXmlApplicationContext;
          import com.rain.bean.Bean;

          public class TestAOP {

           /**
            * @param args
            */
           public static void main(String[] args) {
            // TODO Auto-generated method stub
            ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
            Bean x=(Bean)ctx.getBean("bean");
            x.theMethod();
           }
          }

          結(jié)果:
          Hello world! (by com.rain.bean.TestBeforeAdvice)
          com.rain.bean.BeanImpl.theMethod()Says Hello!


          主站蜘蛛池模板: 罗田县| 新干县| 河北省| 凌海市| 松阳县| 岳池县| 中江县| 呼伦贝尔市| 体育| 乌兰浩特市| 黄大仙区| 林口县| 阳朔县| 德格县| 延川县| 革吉县| 梅河口市| 海兴县| 合阳县| 仁寿县| 张家界市| 获嘉县| 宿松县| 康保县| 新竹市| 梁山县| 浑源县| 双流县| 黑龙江省| 绥江县| 邓州市| 班玛县| 化德县| 黄陵县| 尤溪县| 浮梁县| 东兰县| 华池县| 吴堡县| 运城市| 牙克石市|