提问人:yoo 提问时间:10/17/2023 最后编辑:yoo 更新时间:10/17/2023 访问量:13
Spring Boot:依赖注入问题 - GameService 未在 CustomHandShakeInterceptor 中初始化
Spring Boot: Dependency Injection Issue - GameService not Initialized in CustomHandShakeInterceptor
问:
我正在尝试控制 Websocket 连接。因此,我实现了一个 customHandShakeInterceptor。 出于某种原因,它没有创建我的服务的实例。
@Component
public class CustomHandShakeInterceptor extends HttpSessionHandshakeInterceptor {
@Autowired private GameService gameService;
@Override
public boolean beforeHandshake(
ServerHttpRequest request,
@NonNull ServerHttpResponse response,
@NonNull WebSocketHandler wsHandler,
@NonNull Map<String, Object> attributes
) throws Exception {
String query = request.getURI().getQuery();
if(query != null && query.contains("game_id")) {
String game = query.substring(query.indexOf("game_id=") + 8);
gameService.getGame(game);
if(gameService.getGame(game) == null) {
response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
response.setStatusCode(HttpStatus.NOT_FOUND);
String jsonResponse = "{\"error\": \"Game not found\"}";
response.getBody().write(jsonResponse.getBytes());
return false;
}
}
return super.beforeHandshake(request, response, wsHandler, attributes);
}
}
当我尝试连接到 websocket 时出现错误。
Cannot invoke "projects.web.tictactoe.service.GameService.getGame(String)" because "this.gameService" is null
我尝试手动添加 GameService 类 还尝试将 CustomHandShakeInterceptor 类移动到其他包,但结果相同。@ComponentScan(basePackageClasses = GameService.class)
我不想创建一个新的GameService实例,因为它有所有正在进行的游戏的数据。
我想知道为什么春天没有处理它,我很感激任何建议。
答: 暂无答案
评论