I am trying to run my application but its giving me this error. It says I need to configure my SimpMessagingTemplate
but when I tried @Autowire
it still didn’t work how can i solve this problem
configuration file
@Configuration
@EnableAutoConfiguration
public class ChatConfiguration implements WebSocketMessageBrokerConfigurer {
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/chat").setAllowedOrigins("*");
registry.addEndpoint("/chat").setAllowedOrigins("*").withSockJS();
}
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app");
registry.enableSimpleBroker( "/user");
}
public boolean configureMessageConverters(List<MessageConverter> messageConverter) {
DefaultContentTypeResolver resolver = new DefaultContentTypeResolver();
resolver.setDefaultMimeType(MimeTypeUtils.APPLICATION_JSON);
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
converter.setObjectMapper(new ObjectMapper());
converter.setContentTypeResolver(resolver);
messageConverter.add(converter);
return false;
}
}
controller(UserController.java)
@Controller
@RequiredArgsConstructor
public class ChatController {
private final SimpMessagingTemplate messagingTemplate;
private final ChatMessageService chatMessageService;
@MessageMapping("/chat")
public void processMessage(@Payload ChatMessage chatMessage) {
ChatMessage savedMsg = chatMessageService.save(chatMessage);
messagingTemplate.convertAndSendToUser(
chatMessage.getReceiver(), "/queue/messages",
new ChatNotification(
savedMsg.getChatId(),
savedMsg.getSender(),
savedMsg.getReceiver(),
savedMsg.getMessage()));
}
@GetMapping("/messages/{senderId}/{recieverId}")
public ResponseEntity<List<ChatMessage>> findChatMessages(@PathVariable String senderId,
@PathVariable String recieverId) {
return ResponseEntity
.ok(chatMessageService.findChatMessages(senderId, recieverId));
}
}
(ChatController.java)
@Controller
@RequiredArgsConstructor
public class ChatController {
private final SimpMessagingTemplate messagingTemplate;
private final ChatMessageService chatMessageService;
@MessageMapping("/chat")
public void processMessage(@Payload ChatMessage chatMessage) {
ChatMessage savedMsg = chatMessageService.save(chatMessage);
messagingTemplate.convertAndSendToUser(
chatMessage.getReceiver(), "/queue/messages",
new ChatNotification(
savedMsg.getChatId(),
savedMsg.getSender(),
savedMsg.getReceiver(),
savedMsg.getMessage()));
}
@GetMapping("/messages/{senderId}/{recieverId}")
public ResponseEntity<List<ChatMessage>> findChatMessages(@PathVariable String senderId,
@PathVariable String recieverId) {
return ResponseEntity
.ok(chatMessageService.findChatMessages(senderId, recieverId));
}
}
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- First,I tried autowiring it and is says cannot be injected something like that..
2.Second, I tried using @ComponentScan it still gave me an error
1