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: ,

作者:Jock

Leave a Reply

You must be logged in to post a comment.

Switch to our mobile site