【发布时间】:2011-11-01 14:48:06
【问题描述】:
我正在玩 Spring AOP。
这是一个简单的类
public class CModel extends Car {
private double torqueMeasure = 1;
public CModel() {
System.out.println(" C-Model constructor");
}
}
而Spring的配置是这样的
<aop:config>
<aop:aspect ref="audit">
<aop:before pointcut="execution(* com.test.main..*(..))" method="firstControl"/>
...
</aop:aspect>
</aop:config>
现在好了;当我添加 aop:config 并拦截 CModel 时,Spring 会两次调用 CModel 构造函数。这意味着 Spring 创建了 2 个 CModel 对象,对吧?
如果我删除 AOP 配置,那么 Spring 只会创建一个 CModel 对象。
知道为什么会这样吗?
谢谢。
【问题讨论】:
-
我认为 spring 为它创建了这个 bean 和代理。动态代理类扩展了基类,因此它应该在其构造函数中调用 super()。您可以在 CModel 构造函数中打印堆栈跟踪以确保(类似于 new Exception().printStackTrace())。
标签: java spring aop spring-aop