学习笔记:AOP_Cuckoo's Egg(杜鹃的蛋)
代码(转bea)
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><!-- Bean configuration --><bean id="businesslogicbean"/></property><property name="interceptorNames"><list><value>theAroundAdvisor</value></list></property></bean><!-- Bean Classes --><bean id="beanTarget" /><!-- Advisor pointcut definition for around advice --><bean id="theAroundAdvisor"/></property><property name="pattern"><value>.*</value></property></bean><!-- Advice classes --><bean id="theAroundAdvice" /></beans>
public interface IBusinessLogic {public void foo();}
public class BusinessLogic implements IBusinessLogic {public void foo() {System.out.println("Inside QBusinessLogic.foo()");}}
public class AroundAdvice implements MethodInterceptor {public Object invoke(MethodInvocation invocation) throws Throwable {System.out.println("Hello world! (by " + this.getClass().getName()+ ")");//从around通知内调用foo()方法,可以使用proceed()方法,可从invoke(..)方法的MethodInvocation参数中得到它。invocation.proceed();//invocation.getArguments()[0] = new Integer(20);System.out.println("Goodbye! (by " + this.getClass().getName() + ")");return null;}}
public class MainApplication {/** * @param args */public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");IBusinessLogic testObject = (IBusinessLogic)ctx.getBean("businesslogicbean");testObject.foo();}}1 楼 ray_linn 2007-01-05 说实话,除了Transaction和Security这两个方面, 还比较少看到些超越"Hello, world"的AOP例子, 是我孤陋寡闻,还是很说明问题?