mehrere Instanzen von autowired bean
Wenn eine bean ist autowired, tut es erstellen Sie mehrere Instanzen der Klasse?
Ist hier ein Beispiel;
public class ClassA {
@Autowired
private ClassB classB;
public ClassB getClassB() {
return classB;
}
public void setClassB(ClassB classB) {
this.classB = classB;
}
//using ClassB in method 1
public void useClassBmethod1() {
//currently using autowired ClassB instance
classB.doSomething();
}
//using ClassB in method 2
public void useClassBMethod2() {
//need a new instance of ClassB but through the same autowired bean
ClassB classb = getClassB();
}
}
public class ClassB {
public void doSomething() {}
}
Also meine Frage ist, hat autowiring eine Bohne wissen, wie man erstellen Sie eine neue Instanz einer bean, wenn erforderlich oder dies bleibt dem Programmierer zu entziffern?
Dank für die Unterstützung aus.
InformationsquelleAutor drecute | 2013-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt von Attribut scope der bean-tag. Wenn
scope="singleton"
die standardmäßig jedes mal dann erhalten Sie eine einzige Instanz, und wennscope="prototype"
dann erhalten Sie verschiedene Instanzen. Und es hängt nicht von autowire.InformationsquelleAutor Shoaib Chikate
Mithilfe
@Autowired
weisen Sie classloader zu assoziieren jede Instanz der Klasse verfügbar, in container Verbindung mit dem angerufenen. Sie müssen sicherstellen, dass Sie haben eine Eingabe gemacht zu instanziieren der bean in deiner config-Datei wie<bean id="test" class="xxx.Test" />
. Auch möchten Sie vielleicht, um Bereiche zu.Wenn Sie mehrere Instanzen der gleichen Klasse zu definieren mit unterschiedlichen Namen dann mit
@Autowired
müssen Sie den spezifischen Namen, die Sie verwenden möchten, mit Hilfe der qualifier.InformationsquelleAutor Rupesh
standardmäßig alle Bohnen sind singleton, so dass nur eine Instanz erstellt werden, mehr über Bereiche http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/beans.html#beans-factory-method-injection
InformationsquelleAutor Sergey