Betrachten wir einen Code:Warum Felder automatisch über autowireCapableBeanFactory ohne Verzögerung autowire?
public class MyClass {
@Autowired
private SomeInterface variable;
public void init(ServletContext servletContext) {
WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext); //debug point here
context.context.getAutowireCapableBeanFactory().initializeBean(this, getClass().getSimpleName());
}
}
Wenn ich bleibe bei Debug autowiring normalen führt, aber wenn ich Debug-Punkt weggeräumt habe ich NPE bei variable
. Es scheint, dass Spring autowiring asynchron ausführt. Gibt es eine Möglichkeit sicherzustellen, dass alle Felder initialisiert werden?
Hinweis
Ja initializeBean(this, getClass().getSimpleName())
rufe dies ist nicht eine bewährte Methode der Frühlings-Nutzung, aber ich habe keine andere Art und Weise, weil Klasse in anderer Bibliothek instanziiert die Feder nicht verwendet hat.
Sie sollten 'SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext (this);' anstelle von 'initializeBean' verwenden. –