abrufen Bean programmatisch
@Configuration
public class MyConfig {
@Bean(name = "myObj")
public MyObj getMyObj() {
return new MyObj();
}
}
Habe ich diese MyConfig Objekt mit @Configuration Spring-annotation.
Meine Frage ist, wie kann ich abrufen der bean programmgesteuert (in eine reguläre Klasse)?
beispielsweise das code-snippet sieht wie folgt aus.
Vielen Dank im Voraus.
public class Foo {
public Foo(){
//get MyObj bean here
}
}
public class Var {
public void varMethod(){
Foo foo = new Foo();
}
}
Versuchen
Ich kann das nicht @Autowire da muss ich schaffen, Foo-Objekt mithilfe von new in runtime
Check out the Qualifier annotation.
Verwandte: Frühling Injektion oder autowiring datasource-bean-Klasse. Überprüfen Sie das Teil, das unten meine Antwort.
Sie haben die Einstellungen im Spring-Kontext-Datei?
@Autowire
ing... oder genauer @Qualifier("myObj")
.Ich kann das nicht @Autowire da muss ich schaffen, Foo-Objekt mithilfe von new in runtime
Check out the Qualifier annotation.
Verwandte: Frühling Injektion oder autowiring datasource-bean-Klasse. Überprüfen Sie das Teil, das unten meine Antwort.
Sie haben die Einstellungen im Spring-Kontext-Datei?
InformationsquelleAutor user800799 | 2014-09-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ein Beispiel
Allerdings werden Sie nur selten brauchen, um access-Datei ApplicationContext direkt. In der Regel starten Sie es einmal und lassen Sie Bohnen füllen sich automatisch aus.
Hier gehen Sie:
Beachten Sie, dass Sie nicht haben, zu schweigen-Dateien, die sich schon in applicationContext.xml. Jetzt können Sie einfach eins Holen-bean-name oder Typ:
Beachten Sie, dass es gibt Tonnen von Möglichkeiten, um zu starten Frühling - mit ContextLoaderListener, @Configuration-Klasse, etc.
InformationsquelleAutor Xstian
Versuchen Sie dies:
ApplicationContext
zu. ;DDu hast Recht, sind ähnliche Lösungen 😀
InformationsquelleAutor Peter Rader
Die einfachste (wenn auch nicht die sauberste) Methode, wenn Sie wirklich brauchen, zu Holen Bohnen aus der
ApplicationContext
zu haben, Ihre Klasse zu implementieren, dieApplicationContextAware
- Schnittstelle und bieten diesetApplicationContext()
Methode.Sobald Sie einen Verweis auf die
ApplicationContext
haben Sie Zugriff auf viele Methoden zurück bean-Instanzen zu Ihnen.Der Nachteil ist, dass diese Ihre Klasse bewusst den Frühling Kontext, was man vermeiden sollte, wenn dies notwendig ist.
InformationsquelleAutor Jim Garrison