Konfiguruję Websockets na wiosnę, wykonując instrukcje zawarte w dokumentacji.Nie można autowirować. Nie znaleziono fasoli typu SimpMessagingTemplate.
Obecnie próbuję wysłać wiadomość od serwera do klienta w sposób opisany w sekcji „Sending messages from anywhere”
Wzorem można Autowire klasy o nazwie SimpMessagingTemplate
@Controller
public class GreetingController {
private SimpMessagingTemplate template;
@Autowired
public GreetingController(SimpMessagingTemplate template) {
this.template = template;
}
@RequestMapping(value="/greetings", method=POST)
public void greet(String greeting) {
String text = "[" + getTimestamp() + "]:" + greeting;
this.template.convertAndSend("/topic/greetings", text);
}
}
jednak mój obecny projekt nie może znaleźć fasoli "SimpMessagingTemplate". (Intellij: „Nie można autowire Brak fasola typu SimpMessagingTemplate znaleziono”
Muszę sprawdzić kilka przykładów w Internecie, ale nie mogę znaleźć sposobu, aby dostać Wiosna aby utworzyć wystąpienie SimpMessagingTemplate Jak mogę Autowire go
..?EDIT:.
postanowiłem wysłać trochę więcej informacji tła to jest moja obecna konfiguracja websocket:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:websocket="http://www.springframework.org/schema/websocket"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/websocket
http://www.springframework.org/schema/websocket/spring-websocket-4.0.xsd">
<!-- TODO properties to be read from a properties file -->
<websocket:message-broker application-destination-prefix="/app">
<websocket:stomp-endpoint path="/new_session" >
<websocket:sockjs/>
</websocket:stomp-endpoint>
<websocket:simple-broker prefix="/topic"/>
</websocket:message-broker>
</beans>
websocket współpracuje z T jego kontroler
@Controller
public class SessionController {
private static final Logger log = LoggerFactory.getLogger(SessionController.class);
@MessageMapping("/new_session")
@SendTo("/topic/session")
public SessionStatus newSession(Session session) throws Exception {
Thread.sleep(3000); // simulated delay
log.info("Response sent !!");
return new SessionStatus("StatusReport, " + session.toString() + "!");
}
}
ja po prostu nie wiem, jak do tej pracy
public class SessionController {
private static final Logger log = LoggerFactory.getLogger(SessionController.class);
private SimpMessagingTemplate template;
@Autowired
public SessionController(SimpMessagingTemplate template) {
this.template = template;
}
}
Jako fasoli „SimpMessagingTemplate szablonu” nie została znaleziona. Dokumentacja wiosna nie zawiera więcej szczegółów dotyczących tej kwestii.
EDIT: Przykład kodu pracującego w github
Dzięki za pomoc. Znalazłem problem. Napisałem [dowód kodu] (https://github.com/tk421/spring-stomp), a następnie zdaję sobie sprawę, że problem polega na tym, że Intellij nie zbiera prawidłowo @Autowire for SimpMessagingTemplate. Jeśli uruchomisz teraz program, działa dobrze. – Tk421
Czy byłeś w stanie rozwiązać problem? – plkmthr
@plkmthr Problem polega na tym, że Intellij nie pobiera poprawnie SimpMessagingTemplate. Jeśli go uruchomisz, zadziała. Sprawdź link do "dowodu kodu" – Tk421