|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
在作用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的五脏六腑和躯干四肢了 |
|