Я пытаюсь внедрить bean-компонент prototype
в bean-компонент singleton
так, чтобы каждый новый вызов метода синглтон-компонента имел новый экземпляр прототипа bean-компонента.
Рассмотрим синглтон-бин, как показано ниже:
@Component
public class SingletonBean {
@Autowired
private PrototypeBean prototypeBean;
public void doSomething() {
prototypeBean.setX(1);
prototypeBean.display();
}
}
Я ожидаю, что каждый раз, когда вызывается метод doSomething()
, используется новый экземпляр PrototypeBean
.
Ниже приведен пример прототипа:
@Component
@Scope(value="prototype", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class PrototypeBean {
Integer x;
void setX(Integer x) {
this.x = x;
}
void display() {
System.out.println(x);
}
}
То, что, похоже, происходит, заключается в том, что spring слишком тяготеет к передаче нового экземпляра PrototypeBean в методе doSomething()
. Таким образом, две строки кода в методе doSomething()
создают новый экземпляр prototypeBean в каждой строке.
И так во 2-й строке - prototypeBean.display()
печатает NULL.
Чего не хватает в конфигурации для этой инъекции?