2 Stimmen

Frühling: autowired Feld ist leer

Ich benötige, die externe Klassenbibliothek an meinen Bean anzuschließen, um sie als Singleton zu verwenden.
.xml Konfiguration:

Java Bean:

@Service
public class MyBean {

    @Autowired
    private ExternalBean externalBean;

    public void setExternalBean(ExternalBean externalBean) {
        this.externalBean = externalBean;
    }

Weiterhin verwende ich die verdrahtete Variable externalBean in einer öffentlichen Methode, um sie nicht bei jedem Methodenaufruf instanziieren zu müssen. Das Problem besteht darin, dass sie null ist.

Habe ich den Bean korrekt verdrahtet? Was ist der Fehler.

5voto

loodakrawa Punkte 1428

Sie müssen die externe Klasse als Bean definieren, damit @Autowired funktioniert.

Außerdem benötigen Sie, wenn Sie @Autowired verwenden, keinen Setter dafür.

1voto

Ralph Punkte 114913

Loodakrawa hat recht. Eine zweite Sache, die ein Problem verursachen kann, ist, dass Sie eine XML-Bean-Deklaration für myBean haben und die Bean zusätzlich mit @Service annotiert haben. Ich vermute, dass dies zu Problemen führen wird, sobald Sie die Komponentenscan aktivieren.

1voto

danny.lesnik Punkte 18305

Ich denke, dass die bessere Idee ist, den Kontextpfad-Scan zu verwenden:

Stellen Sie sicher, dass all diese Klassen im Paket sind. Markieren Sie dann beide Klassen mit einer der Annotations (@Repository, @Service, @Component).

Einer der Vorteile, kein Setter erforderlich.

P.S: Wenn Sie den Basis-Scan verwenden, müssen Sie die Klasse nicht als Bean deklarieren, Annotations sind ausreichend

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X