Ich habe an meinem ersten Spring-Projekt gearbeitet und bin auf ein lästiges Problem gestoßen.Einige von @Autowired gesetzte Objekte sind immer Null, andere sind OK
Ich habe eine Klasse namens 'UsernameService', das wie eine Bohne in der Dispatcher-servlet.xml konfiguriert ist:
<bean id="usernameService" class="service.UsernameService" scope="session" >
<aop:scoped-proxy />
</bean>
und wenn diese Bohne in einer meiner Klassen erstellt (Bean Definition :)
<bean id="testController" class="controller.TestController" />
als solche:
@Autowired
UsernameService uns;
funktioniert es absolut in Ordnung. Allerdings, wenn ich versuchen und tun das gleiche in einer anderen Klasse, LogController:
<bean id="logController" class="controller.LogController" />
dann funktioniert es nicht, und ich erhalte den folgenden Fehler:
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/flexitime] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause java.lang.NullPointerException
Ich habe es geschafft, (ich glaube,) schreibe diesen Fehler der Tatsache zu, dass uns nie wirklich gesetzt/erstellt wird und in LogController als null bleibt.
Ich habe das ausgiebig gegoogelt und viele "Lösungen" gefunden, jedoch hat noch keiner von ihnen funktioniert.
Danke! James
Wie die LogController zugegriffen wird. Haben Sie eine Methode mit @RequestMapping, die als Antwort auf eine Webanfrage aufgerufen wird oder machen Sie einen neuen LogController irgendwo in Ihrem Code? – gkamal
Das Objekt darf nicht mit "neu" erstellt werden, damit die Injektion funktioniert. –
@gkamal LogController wird von einem anderen Controller aus aufgerufen, und es ist selbst eine autowired Bean: '@Autowired (new line) LogController ls'. @thorb Ich verwende das neue Schlüsselwort nicht, um die Klasse zu initialisieren. – ymhr