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