2
我已經意識到,引用範圍爲@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype")
的spring bean的實例似乎會調用bean的新實例。如何在Spring中使用setters
例如:
@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
在a.setItem(item);
實例似乎是不同於在a.method();
,由此使得IMPOSIBLE在豆類使用存取方法與@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype")
範圍。
這是預期的行爲?我是否錯過了關於@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype")
的使用的一些理解?