Spring AOP - Introduction

public interface IOther {
    public void doOther();
}


 import org.aopalliance.intercept.MethodInvocation;  
 import org.springframework.aop.IntroductionInterceptor;  
   
   
 public class IChangeAdvisora implements IntroductionInterceptor,IOther{  
   
     public Object invoke(MethodInvocation m) throws Throwable {  
         if(implementsInterface(m.getMethod().getDeclaringClass())){  
             return m.getMethod().invoke(this, m.getArguments());
             
       }else{  
            return m.proceed();  
         }  
     }  
   
     public boolean implementsInterface(Class intf) {  
         return intf.isAssignableFrom(IOther.class);  
     }  
   
     public  void doOther() {  
         System.out.println("doOther in intrduction");  
            
    }  
   
 }  



beanconfig.xml

<bean id="somebean" class="cn.blogjava.introduction.Some" />
   
    <bean id="ChangeAdvisor"
    class ="IChangeAdvisora" />
   
    <bean id="introAdvisor"
    class="org.springframework.aop.support.DefaultIntroductionAdvisor">
    <constructor-arg>
    <ref bean ="ChangeAdvisor" />
    </constructor-arg>
    </bean>
   
    <bean id="someIntroducedBean" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="target" ref ="somebean">
     </property>
    <property name="interceptorNames">
    <list>
    <value> introAdvisor</value>
    </list>
    </property>
<property name="proxyInterfaces"> 
          <value>IOther</value> 
         </property> 
          <property name="proxyTargetClass"> 
             <value>true</value> 
         </property> 

    <property name="optimize"><value>true</value>
    </property>
    </bean>

你可能感兴趣的:(java,spring,AOP,xml)