/** * 实现org.springframework.aop.MethodBeforeAdvice */ public class WelcomeAdvice implements MethodBeforeAdvice{ public void before(Method method, Object[] objects, Object o) throws Throwable { System.out.println("Welcome,这是MethodBeforeAdvice的before方法!"); } } /** *实现了org.springframework.aop.AfterReturningAdvice */ public class ThankYouAdvice implements AfterReturningAdvice{ public void afterReturning(Object o, Method method, Object[] objects, Object o1) throws Throwable { System.out.println("Thank you, come again! 这是 AfterReturningAdvice的afterReturning方法!"); } }public interface IAopTest { void test(); } public class AopTest implements IAopTest{ public void test() { System.out.println("Aop Testing......."); } } public class TestResultImpl { private IAopTest aopTest; public void setAopTest(IAopTest aopTest) { this.aopTest = aopTest; } public void test() { aopTest.test(); } } <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--创建目标代理对象--> <bean id="aopTest" class="aop.AopTest"/> <!--创建前置通知--> <bean id="welcomeAdvice" class="aop.WelcomeAdvice"/> <!--创建后置通知--> <bean id="thankYouAdvice" class="aop.ThankYouAdvice"/> <!--创建代理bean开始--> <bean id="proxyFactoryBean" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces" value="aop.IAopTest"/> <property name="interceptorNames"> <list> <value>welcomeAdvice</value> <value>thankYouAdvice</value> </list> </property> <property name="target" ref="aopTest"/> </bean> <bean id="testResult" class="aop.TestResultImpl"> <property name="aopTest" ref="proxyFactoryBean"/> </bean> </beans> /** * 这是测试代码 */ public class MyTest { @Test public void test() { ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] {"aop/test.xml"}); TestResultImpl aopTest = (TestResultImpl)ctx.getBean("testResult"); aopTest.test(); } }
这是测试结果:
Welcome,这是MethodBeforeAdvice的before方法!Aop Testing.......Thank you, come again! 这是AfterReturningAdvice的afterReturning方法!