学习spring中的advice的一个例子

package onlyfun.caterpillar;

public interface IHello {
    public void hello(String name);
}


package onlyfun.caterpillar;

public class HelloSpeaker implements IHello {
	
    public void hello(String name) {
        System.out.println("Hello, " + name); 
    }
}



package onlyfun.caterpillar;

import java.lang.reflect.Method;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.aop.MethodBeforeAdvice;

public class LogBeforeAdvice 
        implements MethodBeforeAdvice { 
    private Logger logger = 
            Logger.getLogger(this.getClass().getName()); 
    
    public void before(Method method, Object[] args, 
                     Object target) throws Throwable { 
        logger.log(Level.INFO, 
                "method starts..." + method); 
   } 
}



package onlyfun.caterpillar;

import java.lang.reflect.Method;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.springframework.aop.AfterReturningAdvice;

public class LogAfterAdvice 
                    implements AfterReturningAdvice { 
    private Logger logger = 
            Logger.getLogger( this.getClass().getName()); 
    
    public void afterReturning(Object object, 
                               Method method, 
                               Object[] args, 
                               Object target) throws Throwable { 
        logger.log(Level.INFO, "method ends..." + method); 
   } 
}



//测试类
package onlyfun.caterpillar;

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

public class SpringAOPDemo {
    public static void main(String[] args) {
        ApplicationContext context = 
                new FileSystemXmlApplicationContext("beans-config.xml"); 
        IHello helloProxy = (IHello) context.getBean("helloProxy"); 
        helloProxy.hello("penghao122"); 
    }
}



beans_config.xml

    
     <bean id="logBeforeAdvice" 
          class="onlyfun.caterpillar.LogBeforeAdvice"/> 
    
    <bean id="logAfterAdvice" 
          class="onlyfun.caterpillar.LogAfterAdvice"/> 

    <bean id="helloSpeaker" 
          class="onlyfun.caterpillar.HelloSpeaker"/> 
    
    <bean id="helloProxy" 
          class="org.springframework.aop.framework.ProxyFactoryBean"> 
        <property name="proxyInterfaces"> 
            <value>onlyfun.caterpillar.IHello</value> 
        </property> 
        <property name="target"> 
            <ref bean="helloSpeaker"/> 
        </property> 
        <property name="interceptorNames"> 
            <list> 
                <value>logBeforeAdvice</value> 
                <value>logAfterAdvice</value> 
            </list> 
        </property> 
    </bean> 

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