【发布时间】:2015-02-08 16:05:24
【问题描述】:
我已经意识到,每当引用同一个实例时,引用范围为 @Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype") 的 spring bean 的实例似乎会调用 bean 的新实例。
例如:
@Component
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype")
class Item {
.....
}
@Component
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype")
class A {
private Item item;
public void setItem(Item item) {
this.item = item;
}
public void method() {
item.doSomething();
}
}
@Component
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype")
class B {
@Autowired
private A a;
@Autowired
private Item item;
void bMethod() {
a.setItem(item);
a.method();
}
}
a.setItem(item); 中的A 实例似乎与a.method(); 中的不同,因此无法在@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype") 范围内的bean 中使用访问器方法。
这是预期的行为吗?我对@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype")的用法缺少一些了解吗?
【问题讨论】: