三 25
首先来2个最简单的bean
package example; /** * @author jockhuang * */ public class TestA { public void sayHello(){ System.out.println("TestA"); } }
package example; public class TestB { public void sayHi(){ System.out.println("TestB"); } }
2个很简单的bean,applicationContext.xml中的配置如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <bean id="TestA" class="example.TestA"></bean> <bean id="TestB" class="example.TestB"></bean> </beans>
来个测试运行这2个bean
package example; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public final class TestAOP { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); TestA a = (TestA) ctx.getBean("TestA"); a.sayHello(); TestB b = (TestB) ctx.getBean("TestB"); b.sayHi(); } }
这个小程序执行结果应该很明白了。
AOP上场了。
package example; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; @Aspect public class SimpleAspect { @Pointcut("execution(* example.*.*H*())") public void simplePointcut() { } @AfterReturning(pointcut="simplePointcut()") public void simpleAdvice() { System.out.println("I am ghost!"); } }
applicationContext.xml修改为
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"> <aop:aspectj-autoproxy /> <bean id="TestA" class="example.TestA"></bean> <bean id="TestB" class="example.TestB"></bean> <bean id="simpleAspect" class="example.SimpleAspect" /> </beans>
还是那个TestAOP,现在的执行结果变成;
TestA
I am ghost!
TestB
I am ghost!
AOP,AOP
最近看Spring好晕好晕,需要高人指点一下迷津了。
Tags: Spring, 源码
Leave a Reply
You must be logged in to post a comment.
近期评论