AspectJ
在作用AspectJ标签代理时,出了点问题,找了好久才知道答案,先看看我的代码:
Waiter.java
package cn.kingfengks.aspectJaop;
public interface Waiter {void greetTo(String name);void serveTo(String name); }
NaiveWaiter.java
package cn.kingfengks.aspectJaop;
public class NaiveWaiter implements Waiter {
public void greetTo(String name) { System.out.println("greet to " name "...");}
public void serveTo(String name) { System.out.println("serving to " name "...");}public void print(){ System.out.println("I am a Waiter!");}
}
PreGreetingAspect .java
package cn.kingfengks.aspectJaop;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before;
@Aspect public class PreGreetingAspect {@Before("execution(* greetTo(..))")public void beforGreeting(){ System.out.println("How are you !");} }
问题就出在主函数上如下面:
//一定要用ApplicationContext才可以用 //原来用的是下面这样的,怎么样都没办法自动代理 //Resource res = new ClassPathResource("cn/kingfengks/aop/advisor/applicationContext_aop.xml"); //BeanFactory bf = new XmlBeanFactory(res); ApplicationContext ctx = new ClassPathXmlApplicationContext("cn/kingfengks/aspectJaop/applicationContext.xml"); Waiter waiter = (Waiter)ctx.getBean("waiter"); waiter.greetTo("John");
原因是:ApplicationContext派生于BeanFactory,而加入了很多的面向应用的功能,.曾有人这样比喻这2者之间的关系,如果BeanFactory是Spring的心脏那么ApplicationContext就是Spring的五脏六腑和躯干四肢了
页:
[1]