[JAVA] Autowired-Felder in einer Klasse, die TextWebSocketHandler in Spring Boot erbt, werden NULL

1. Umwelt

Spring Boot:v2.2.5

2. Ärger

Verwenden Sie WebSocket, um eine Chat-Funktion mit Spring Boot zu erstellen.

Ich habe eine Klasse erstellt, die von TextWebSocketHandler erbt, und versucht, die Repository-Klasse automatisch zu verdrahten, um auf die darin enthaltene Datenbank zuzugreifen, aber die im Feld deklarierte Variable der Repository-Klasse ist NULL.

Das Folgende ist die WebSocketChatEndpoint-Klasse, die von TextWebSocketHandler erbt.

WebSocketChatEndpoint.java


@ServerEndpoint("/api/chat")
@Component
public class WebSocketChatEndpoint extends TextWebSocketHandler {

  @Autowired
  private ChatRepository chatRepository; //NULL

  @OnOpen
  public void onOpen(Session session) {
… Abkürzung

Zur Laufzeit ist chatRepository NULL.

3. Korrespondenz

Feldinjektion auf Setterinjektion geändert.

WebSocketChatEndpoint.java


@ServerEndpoint("/api/chat")
@Component
public class WebSocketChatEndpoint extends TextWebSocketHandler {

  private static ChatRepository chatRepository; //Autodraht

  @Autowired
  public void setChatRepository (ChatRepository chatRepository ) {
        WebSocketChatEndpoint.chatRepository = chatRepository;
  }

  @OnOpen
  public void onOpen(Session session) {
… Abkürzung

Ich habe keine Konstruktorinjektion versucht.

Recommended Posts

Autowired-Felder in einer Klasse, die TextWebSocketHandler in Spring Boot erbt, werden NULL
Was ist @Autowired im Spring Boot?
Ein Memo, das Spring Boot berührte
[Spring Boot] Bis @Autowired in der Testklasse [JUnit5] ausgeführt wird
Eine Geschichte über ein in Java geschriebenes Spring Boot-Projekt, das Kotlin unterstützt
Führen Sie ein Spring Boot-Projekt mit VS-Code aus
So erstellen Sie eine Klasse, die Klasseninformationen erbt
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Rufen Sie den in der Controller-Klasse von Spring Boot definierten Pfad als Liste ab
Java-Tipps - Erstellen Sie mit Gradle ein Spring Boot-Projekt
Schreiben einer Klasse, die in Java bestellt werden kann Ein kleines Standard-Memo
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
Testen Sie die Klasse mit Feldinjektion im Spring-Boot-Test, ohne den Spring-Container zu verwenden
Beschleunigen Sie das Testen von Validatoren, für die DI im Spring Boot erforderlich ist
Beispiel einer Webanwendung, die mit Spring Boot 1.5 mehrere Datenbanken verwaltet
[MQTT / Java] Implementierte eine Klasse, die Pub / Sub von MQTT in Java ausführt
Legen Sie den Kontextparameter in Spring Boot fest
Spring Boot 2 Multiprojekt mit Gradle
Wichtige Änderungen in Spring Boot 1.5
NoHttpResponseException in Spring Boot + WireMock
Spring Boot 2.2 unterstützt jetzt RSocket. Probieren Sie es aus
Beispielcode, der die Moustache-Vorlagen-Engine mit Spring Boot verwendet
Rufen Sie in Spring Boot eine Proxy-Instanz der Komponente selbst ab
[Spring Boot] Verspotten Sie die Inhalte, die außerhalb des Bereichs automatisch verdrahtet werden. [JUnit 5]
Wird in Spring Boot mithilfe einer Bean-Definitionsdatei mit dem Namen application.xml angepasst
Schreiben wir einen Testcode für die Anmeldefunktion mit Spring Boot