Я знаю, что есть много вопросов на эту тему.Я прочитал весенний загрузочный документ и все решения здесь.Согласно Spring Boot Doc, @ServerEndpoint
является аннотацией Javax, а @Autowired
компоненты управляются Spring-Boot.Эти два нельзя использовать вместе.Решением этой проблемы было бы добавить SpringConfigurator
в качестве конфигуратора ServerEndpoint
.Когда я попробовал это, я получаю следующую ошибку:
Не удалось найти корневой WebApplicationContext.Был ли ContextLoaderListener не использован?
Нет примера в веб-сокете при загрузке page для использования ContextLoaderListener
.Как можно использовать ContextLoaderListener
, чтобы компоненты могли быть внедрены в @ServerEndpoint
аннотированные контроллеры?
Ниже приведен мой код.
Контроллер Websocket
@ServerEndpoint(value = "/call-stream", configurator = SpringConfigurator.class)
public class CallStreamWebSocketController
{
@Autowired
private IntelligentResponseService responseServiceFacade;
// Other methods
}
Конфигурации Websocket
@Configuration
public class WebSocketConfiguration
{
@Bean
public CallStreamWebSocketController callStreamWebSocketController()
{
return new CallStreamWebSocketController();
}
@Bean
public ServerEndpointExporter serverEndpointExporter()
{
return new ServerEndpointExporter();
}
}
Редактировать: Этот файл был помечен как дубликат этого вопроса.Я пробовал решение, указанное в ответах.Решение состоит в том, чтобы добавить SpringConfigurator
в качестве конфигуратора @ServerEndpoint
.После добавления этого я все еще получаю ошибку, упомянутую в деталях.