[JAVA] Les champs auto-câblés dans une classe qui hérite de TextWebSocketHandler dans Spring Boot deviennent NULL

1. Environnement

Spring Boot:v2.2.5

2. Problème

Utilisez WebSocket pour créer une fonction de discussion avec Spring Boot.

J'ai créé une classe qui hérite de TextWebSocketHandler et j'ai essayé d'autowired la classe de référentiel pour accéder à la base de données, mais la variable de la classe de référentiel déclarée dans le champ est NULL.

Voici la classe WebSocketChatEndpoint qui hérite de TextWebSocketHandler.

WebSocketChatEndpoint.java


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

  @Autowired
  private ChatRepository chatRepository; //NULL

  @OnOpen
  public void onOpen(Session session) {
… Abréviation

Au moment de l'exécution, chatRepository est NULL.

3. Correspondance

Injection de champ modifiée en injection de setter

WebSocketChatEndpoint.java


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

  private static ChatRepository chatRepository; //Câblé automatiquement

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

  @OnOpen
  public void onOpen(Session session) {
… Abréviation

Je n'ai pas essayé l'injection de constructeur.

Recommended Posts

Les champs auto-câblés dans une classe qui hérite de TextWebSocketHandler dans Spring Boot deviennent NULL
Qu'est-ce que @Autowired dans Spring Boot?
Un mémo qui a touché Spring Boot
[Spring Boot] Jusqu'à ce que @Autowired soit exécuté dans la classe de test [JUnit5]
Une histoire sur un projet Spring Boot écrit en Java qui prend en charge Kotlin
Exécuter un projet Spring Boot avec VS Code
Comment créer une classe qui hérite des informations de classe
Comment ajouter un chemin de classe dans Spring Boot
Obtenez le chemin défini dans la classe Controller de Spring Boot sous forme de liste
Conseils Java - Créez un projet Spring Boot avec Gradle
Ecrire une classe qui peut être ordonnée en Java Un petit mémo standard
Comment créer un projet Spring Boot dans IntelliJ
Testez la classe injectée sur le terrain dans le test de démarrage Spring sans utiliser le conteneur Spring
Accélérez les tests des validateurs qui nécessitent DI dans Spring Boot
Exemple d'application Web qui gère plusieurs bases de données avec Spring Boot 1.5
[MQTT / Java] Implémentation d'une classe qui fait Pub / Sub de MQTT en Java
Définir le paramètre contextuel dans Spring Boot
Multi-projets Spring Boot 2 avec Gradle
Changements majeurs dans Spring Boot 1.5
NoHttpResponseException dans Spring Boot + WireMock
Spring Boot 2.2 prend désormais en charge RSocket, alors essayez-le
Exemple de code qui utilise le moteur de modèle Moustache avec Spring Boot
Obtenez une instance proxy du composant lui-même dans Spring Boot
[Spring Boot] Simulez le contenu câblé automatiquement en dehors de la portée [JUnit 5]
Intégré dans Spring Boot à l'aide d'un fichier de définition de bean nommé application.xml
Écrivons un code de test pour la fonction de connexion avec Spring Boot