Spring Boot:v2.2.5
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.
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