2008-03-18

aop 学习(一)

关键字: spring aop
最近琢磨aop,看了好多大虾的aop例子,对比xml方式与注解方式,先整理一下。
根据bencode的介绍
圣诞到了, 小A小B 介绍完自己之后,说 "Merry Christmas"。但是这个祝福语由Spring来完成。属于后置通知。
public class A {
    public void sayHello() {
        System.out.println("Hello, I'm a");
    }
}

public class B {
	public void sayHi() {
		System.out.println("Hi, I'm b");
	}
}

引导
public final class Boot {
	public static void main(String[] args) {
		ApplicationContext ctx = new ClassPathXmlApplicationContext(
				"applicationContext.xml");
		A a = (A) ctx.getBean("a");
		a.sayHello();

		B b = (B) ctx.getBean("b");
		b.sayHi();
	}

}

注解方式
@Aspect   
public class SimpleAspect {   
  
    @Pointcut("execution(* org.snowolf.*.say*())")   
    public void simplePointcut() { }   
       
    @AfterReturning(pointcut="simplePointcut()")   
    public void simpleAdvice() {   
        System.out.println("Merry Christmas");   
    }   
}  

	<bean id="a" class="org.snowolf.A" />
	<bean id="b" class="org.snowolf.B" />
	<bean id="simpleAspect"
		class="org.snowolf.SimpleAspect" />
	<aop:aspectj-autoproxy />

完全通过xml配置
public class SimpleAspect {   
  public void simpleAdvice() {   
        System.out.println("Merry Christmas");   
    }   
}  

	<bean id="simpleAspect"
		class="org.snowolf.SimpleAspect" />
	<aop:config>
		<aop:pointcut id="point"
			expression="execution(* org.snowolf.*.say*())" />
		<aop:aspect id="simpleAspect" ref="simpleAspect">
			<aop:after-returning method="simpleAdvice"
				pointcut-ref="point" />
		</aop:aspect>
	</aop:config>

以上两种方式都可以完成需要,代码也很清晰。
评论
发表评论

您还没有登录,请登录后发表评论

snowolf
搜索本博客
最近加入圈子
存档
最新评论