首先感谢各位高手在百忙之中点开小弟的帖子,
小弟刚刚涉足aop,遇到一问题,
在用Spring实现aop,
配置文件里面写了这样一句
老师讲的时候说的是,配置目标对象,
照这么说 是把一个目标类的对象配置给ProxyBeanFactory一个属性
可我打开ProxyBeanFactory.class这个类,并未发现有target这样的属性啊
等待高手解惑……
首先感谢各位高手在百忙之中点开小弟的帖子,
小弟刚刚涉足aop,遇到一问题,
在用Spring实现aop,
配置文件里面写了这样一句
老师讲的时候说的是,配置目标对象,
照这么说 是把一个目标类的对象配置给ProxyBeanFactory一个属性
可我打开ProxyBeanFactory.class这个类,并未发现有target这样的属性啊
等待高手解惑……
在AdvisedSupport类里有个targetSource属性,其实,这个的name="target"的意思是调用setTarget方法,调用的具体方法如下:
[code="java"]public void setTarget(Object target) {
setTargetSource(new SingletonTargetSource(target));
}
public void setTargetSource(TargetSource targetSource) {
this.targetSource = (targetSource != null ? targetSource : EMPTY_TARGET_SOURCE);
}[/code]
通过代码我们可以看到,通过调用AdvisedSupport类中的setTarget(Object target)方法,并且在此方法中,对传进来的对象进行了封装后,又将封装后的值作为setTargetSource方法的参数传进去,并且将值付给targetSource属性,在AdvisedSupport里是这样定义targetSource的,[code="java"]TargetSource targetSource = EMPTY_TARGET_SOURCE;[/code]可以看到,AdvisedSupport是将我们传进来的Bean最终封装成TargetSource对象。如果想更深入的了解,我建议楼主去看下Spring的源代码,最Spring学习很有帮助的。
另外,纠正一个错误,不是ProxyBeanFactory类,是ProxyFactoryBean类。