При использовании веб-сокетов с Spring Boot я видел примеры, которые используют:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic/");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/greeting");;
}
}
Указание config.setApplicationDestinationPrefixes ("/ app") и в контроллере с помощью аннотации @MessageMapping.
И я также видел примеры, которые используют только enableSimpleBroker () и в контроллере используют @ SubscribeMapping.
За то, что я понял, @MessageMapping отвечает за маршрутизацию полученного сообщения в правильный метод.И методы с этой аннотацией будут запускаться только в том случае, если в месте назначения содержится один из префиксов, объявленных в setApplicationDestinationPrefixes.
Но @SubscribeMapping также направляет сообщение в правильный метод, и нам не нужно вызывать setApplicationDestinationPrefixes () вкласс конфигурации.
Какая разница?