无法自动接线。未找到 SimpMessagingTemplate 类型的豆子
2022-09-02 20:56:00
我基本上是按照文档中提供的指南在Spring中配置Websockets的。
我当前正在尝试从服务器向客户端发送消息,如“从任何地方发送消息”部分中所述"
按照该示例,您可以自动连接一个名为 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);
}
}
但是,我当前的项目找不到bean“SimpMessagingTemplate”。(Intellij:“无法自动布线。未找到 SimpMessagingTemplate 类型的豆子'。
我已经在互联网上检查了几个例子,但我找不到如何让Spring创建SimpMessagingTemplate的实例。我该如何自动布线?
编辑:
我决定发送更多的背景信息。这是我当前的 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 可与此控制器配合使用
@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() + "!");
}
}
我只是不知道如何做到这一点
public class SessionController {
private static final Logger log = LoggerFactory.getLogger(SessionController.class);
private SimpMessagingTemplate template;
@Autowired
public SessionController(SimpMessagingTemplate template) {
this.template = template;
}
}
由于找不到bean“SimpMessagingTemplate模板”。Spring文档没有提供有关此事的更多详细信息。
编辑:github中工作代码的示例