WebSocketServer 不能注入对象

我们在WebSocketServer利用spring注入对象提示空指针异常

原因是因为spring对象的创建都是以单例模式创建的,但是websocket的创建是spring启动是创建一次,然后每一个用户连接,都会创建一次webscket对象,所以当你启动项目时,你想要注入的对象已经注入进去,但是当用户连接是,新创建的websocket对象没有你要注入的对象,所以会报NullPointerException

解决办法

 private  static MessageService messageService ;

@Autowired
public void setChatService(MessageService messageService) {
    WebSocketServer.messageService = messageService;
}

原文地址:https://blog.csdn.net/m0_37202351/article/details/86255132

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以看出在WebSocketServer类中存在注入问题。在引用\[2\]中,通过@Autowired注解将LearnedCourseCacheService注入WebSocketServer类中的cacheService属性上,但是注入失败,cacheService为null。而在引用\[3\]中,项目启动时初始化的WebSocket对象可以成功注入service,但是当新用户进入聊天时,系统会创建一个新的WebSocket对象,这时由于Spring默认管理的是单例,所以无法给第二个WebSocket对象注入service,导致注入失败。 因此,解决注入WebSocketServer的问题可以尝试以下方法: 1. 确保WebSocketServer类被正确注解为@Component,以便Spring能够扫描到并管理该类。 2. 确保LearnedCourseCacheService类被正确注解为@Service或@Component,以便Spring能够正确创建并管理该类的实例。 3. 确保WebSocketServer类中的@Autowired注解被正确使用,注入LearnedCourseCacheService时,可以尝试使用构造函数注入或者在属性上使用@Autowired注解。 4. 如果WebSocketServer类需要被多个用户连接使用,可以考虑使用@Scope注解为每个WebSocket对象创建一个新的实例,以避免注入失败的问题。 综上所述,可以尝试以上方法来解决注入WebSocketServer的问题。 #### 引用[.reference_title] - *1* *2* [WebSocketServer无法注入Bean](https://blog.csdn.net/qq_45537574/article/details/122879256)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [SpringBoot中集成websocketWebSocketServer注入mapper为空](https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/127072530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值