Sto configurando Websockets in primavera fondamentalmente seguendo la guida fornita nella documentazione.Impossibile eseguire l'autowire. Nessun bean di tipo SimpMessagingTemplate trovato
Attualmente sto cercando di inviare un messaggio dal server al client come spiegato nella sezione "Sending messages from anywhere"
Seguendo l'esempio, è possibile Autowire una classe denominata 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);
}
}
Tuttavia, il mio progetto attuale non riesce a trovare il bean "SimpMessagingTemplate". (Intellij: 'Impossibile autowire Nessun fagioli di tipo SimpMessagingTemplate trovato'
Ho controllo diversi esempi in internet, ma non riesco a trovare come raggiungere primavera per creare un'istanza di SimpMessagingTemplate Come posso Autowire che
..?EDIT:.
ho deciso di inviare alcune ulteriori informazioni di questo è il mio attuale configurazione 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 lavora con t il suo controllore
@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() + "!");
}
}
io proprio non sicuro di come fare questo lavoro
public class SessionController {
private static final Logger log = LoggerFactory.getLogger(SessionController.class);
private SimpMessagingTemplate template;
@Autowired
public SessionController(SimpMessagingTemplate template) {
this.template = template;
}
}
Come il fagiolo "modello SimpMessagingTemplate" non si trova. La documentazione Spring non offre ulteriori dettagli in merito.
EDIT: Esempio di codice funzionante in github
Grazie per il vostro aiuto. Ho trovato il problema. Ho scritto una [prova del codice] (https://github.com/tk421/spring-stomp) e poi mi rendo conto che il problema è che Intellij non sta raccogliendo correttamente @Autowire per SimpMessagingTemplate. Se esegui il programma ora funziona perfettamente. – Tk421
Sei riuscito a risolvere il problema? – plkmthr
@plkmthr Il problema è che Intellij non rileva correttamente SimpMessagingTemplate. Se lo corri funzionerà. Controlla il link alla "prova di codice" – Tk421