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!


          主站蜘蛛池模板: 定安县| 汤原县| 莲花县| 浮山县| 姚安县| 临朐县| 安宁市| 北宁市| 宝坻区| 阳西县| 偏关县| 富阳市| 瓮安县| 庆阳市| 锡林郭勒盟| 娱乐| 中西区| 彭水| 密云县| 社会| 双辽市| 永吉县| 西畴县| 井研县| 建德市| 金川县| 漯河市| 五家渠市| 堆龙德庆县| 德保县| 锡林浩特市| 马鞍山市| 天祝| 余姚市| 红安县| 华坪县| 锡林浩特市| 双城市| 武夷山市| 合作市| 民乐县|