You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中SocketHandler类@Autowired注入报NullPointerException异常

解决SocketHandler中@Autowired注入出现NullPointerException的问题

我一眼就揪出问题根源了——你在WebSocketConfig里手动new SocketHandler()的操作,导致这个SocketHandler实例完全脱离了Spring容器的管理,Spring自然没法给它注入Socket_mesajService,调用时才会抛出NullPointerException。

问题分析

Spring的依赖注入(DI)只对容器创建并管理的Bean生效。你虽然给SocketHandler加了@Component注解,但配置WebSocket时直接手动实例化,这个对象根本不在Spring的控制范围内,@Autowired注解完全不会被处理,所以socket_mesajService字段始终是null。

解决方案

修改WebSocketConfig,让它注入Spring容器管理的SocketHandler实例,而非手动创建:

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {

    // 注入Spring容器中的SocketHandler Bean
    @Autowired
    private SocketHandler socketHandler;

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        // 使用注入的实例,不要手动new
        registry.addHandler(socketHandler, "/name");
    }
}

为什么这样能解决问题?

现在SocketHandler是Spring容器初始化的Bean(你加了@Component,且ApplicationRun的包扫描已经覆盖它所在路径),Spring会自动处理类中的@Autowired注解,把Socket_mesajService的实例注入进去,就和你其他正常工作的类逻辑一致了。

额外确认点(确保万无一失)

  • 确认SocketHandler所在包在ApplicationRun的scanBasePackages范围内(你的配置是com.polipool.*,只要类在这个包下就没问题)
  • 确认Socket_mesajServiceImpl已经加了@Service注解,且被Spring扫描到(你已经做到了)

内容的提问来源于stack exchange,提问作者user8202387

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:07:17