读书人

运用MethodInterceptor实现AOP

发布时间: 2012-10-23 12:12:22 作者: rapoo

使用MethodInterceptor实现AOP

1. 先写出业务对象接口及实现业务对象。

?

public interface Interface {    public void hello();}

?? 这里写俩个实现。

public class InterfaceImpl implements Interface {    /**      * @see com.alipay.aop.BusinessInterface#hello()     */    @Override    public void hello() {        System.out.println("AOP TEST!!");    }}
?

?

public class InterfaceImplTest implements Interface {    /**      * @see aop.Interface#hello()     */    @Override    public void hello() {        System.out.println("helo world!!");    }}

?

?

2. 实现自己的代理,创建自己的interceptor

?

public class MyInterceptor implements MethodInterceptor {    /**      * @see org.aopalliance.intercept.MethodInterceptor#invoke(org.aopalliance.intercept.MethodInvocation)     */    @Override    public Object invoke(MethodInvocation methodInvocation) throws Throwable {        String info = methodInvocation.getMethod().getDeclaringClass()+ "." +         methodInvocation.getMethod().getName() + "()";                System.out.println(info);                try{            Object result = methodInvocation.proceed();            return result;        }        finally{            System.out.println(info);        }    }}

?

3. 配置文件

?<?xml version="1.0" encoding="GBK"?>

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:sofa="http://img.alipay.net/dtd/schema/service"xmlns:context="http://www.springframework.org/schema/context"xmlns:webflow="http://www.springframework.org/schema/webflow-config"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd         http://img.alipay.net/dtd/schema/service http://img.alipay.net/dtd/schema/service/sofa-service.xsd         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd         http://www.springframework.org/schema/webflow-config http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd"default-autowire="byName"><bean id="beanTarget" /><bean id="myInterceptor" name="code">public class Main {    /**     *      * @param args     */    public static void main(String[] args) {        ClassPathResource resource = new ClassPathResource("spring.xml");        XmlBeanFactory beanFactory = new XmlBeanFactory(resource);        Interface bean = (Interface)beanFactory.getBean("bean");        bean.hello();                Interface testBean = (Interface)beanFactory.getBean("testBean");        testBean.hello();    }}
1 楼 sunnylocus 2011-10-13 做下标记,明天有空仔细研究下方法拦截,感觉这是好东西! 2 楼 爪哇夜未眠 2011-11-18 这个是spring里面的方法拦截 3 楼 nhy338 2012-08-28 mark,留着以后看

读书人网 >编程

热点推荐