There is no difference: MessageSendingOperations
is an interface - contract.
SimpMessagingTemplate
is a concrete implementation of the first one.
Typically it's enough to configure bean for concrete implementation, but inject it by type of its conctract:
@Bean
public MessageSendingOperations messagingTemplate() {
return new SimpMessagingTemplate(this.inputChannel);
}
...
@Component
public class MyService {
@Autowired
private MessageSendingOperations messagingTemplate;
}