coding-haven

出错代码:

@Autowired
private ChatRecordMapper chatRecordMapper;

原因:

webSocket进行连接传递信息时,需要对多个客户端创建多个实例,而spring默认为单例模式,只有在遇到@Component注解时,会进行一次实例化,而之后服务器为客户端创建的实例中,spring不会进行依赖注入,因此变量为null。

解决方法:

将ChatRecordMapper声明为static变量,然后使用基于setter的依赖注入方式进行依赖注入。(注意,不能直接对静态变量标注依赖注入注解,因为静态变量在类初始化过程就被初始化了,此时spring还未实例化对象)因为spring会实例化一次Endpoint变量,然后进行一次依赖注入。而static变量为所有实例所共享。

代码:

private static ChatRecordMapper chatRecordMapper;

@Autowired
public void setChatRecordMapper(ChatRecordMapper chatRecordMapper) {
    this.chatRecordMapper = chatRecordMapper;
}

分类:

技术点:

相关文章:

  • 2021-09-06
  • 2021-05-21
  • 2022-12-23
  • 2021-08-20
  • 2021-07-31
  • 2021-06-14
  • 2021-10-06
  • 2022-02-26
猜你喜欢
  • 2021-04-20
  • 2022-01-02
  • 2021-06-08
  • 2021-06-26
  • 2021-12-12
相关资源
相似解决方案