使用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,留着以后看