1、websocket中注入其他类失败

本质原因:spring管理的都是单例(singleton),和 websocket (多对象)相冲突。 详细解释:项目启动时初始化,会初始化 websocket (非用户连接的),spring 同时会为其注入 service,该对象的 service 不是 null,被成功注入。但是,由于 spring 默认管理的是单例,所以只会注入一次 service。当新用户进入聊天时,系统又会创建一个新的 websocket 对象,这时矛盾出现了:spring 管理的都是单例,不会给第二个 websocket 对象注入 service,所以导致只要是用户连接创建的 websocket 对象,都不能再注入了。 像 controller 里面有 service, service 里面有 dao。因为 controller,service ,dao 都有是单例,所以注入时不会报 null。但是 websocket 不是单例,所以使用spring注入一次后,后面的对象就不会再注入了,会报null。

解决方案:

spring 或 springboot 的 websocket 里面使用 @Autowired 注入 service 或 bean 时,报空指针异常,service 为 null(并不是不能被注入)。 解决方法:将要注入的 service 改成 static,就不会为null了。

参考代码:

参考:https://blog.csdn.net/m0_37202351/article/details/86255132

2、springboot循环依赖的问题

什么是依赖循环,比如:我现在有一个ServiceA需要调用ServiceB的方法,那么ServiceA就依赖于ServiceB,那在ServiceB中再调用ServiceA的方法,就形成了循环依赖。Spring在初始化bean的时候就不知道先初始化哪个bean就会报错。

最好的解决办法是实现解耦,最简单的方法是在其中某个类注入时在@Autowired注解后添加 @Lazy注解即可。

3、springboot实现异步服务

普通JAVA可通过实现多线程来实现异步服务。

在spingboot中,可在Application启动类中增加@EnableAsync 注解,并在想要实现异步的方法上添加注解@Async即可。

启动类:

@SkyArkApplication
@EnableAsync
public class DealApplication {
//    private static LogProcesserService logProcesserService;public static void main(String[] args) {SpringApplication.run(DealApplication.class, args);}
}

想要实现的异步方法:

    @Async@Overridepublic void testSend(javax.websocket.Session session, String sid) {try {int i = 0;}catch(Exception e){e.printStackTrace();}}
 

【spingboot基础知识】相关问题汇总相关推荐

  1. 计算机二级c语言公共基础知识重点,计算机二级C语言公共基础知识与考点汇总...

    计算机二级C语言公共基础知识与考点汇总 计算机二级公共基础知识总结 计算机二级公共基础知识总结 第一章 数据结构与算法 1.1 算法 算法是指解题方案的准确而完整的描述. 算法的基本特征:是一组严谨地 ...

  2. 【DICOMDIR专题】DICOMDIR基础知识及常见问题汇总

    很多网友希望论坛能够出一些更专业.更细分的小专题,DICOMDIR就是目前需求量较大的专题之一.所以,结合网友所需,与几个关心此内容的朋友一起努力,做了一个小专题,希望对你有一些帮助-- DICOMD ...

  3. 软考备考-系统构架师-18-信息系统基础知识相关试题整理

    博客迁移 不恰饭的小站 说明 1 整理2009~2016年系统构架师"信息系统基础知识"题目 2 内容见文档:"考点按章节整理\第 14 章 信息系统基础知识\信息系统基 ...

  4. 汇编8086复习——基础知识、指令汇总、上机实验踩坑

    8086处理器基础知识 汇编语言是大小写不敏感的低级语言,意思就是mov和MOV是汇编语言来说是一样的,当然大小写混用也是可以的,如Mov 在8086汇编语言里,数字默认是十进制的,如果是其他进制数字 ...

  5. 计算机基础知识简答题汇总,计算机基础(简答)

    计算机基础知识 简述计算机的发展经历了那几个阶段? 人们根据计算机采用的主要元器件的不同,将电子计算机的发展分为四代: 第一代(1946年-1956年)为电子管计算机,也叫真空管计算机,其主要逻辑元件 ...

  6. ABAP基础知识 内表汇总数据的方式

    点击蓝字 关注我们 一 前言 新开一个专题: ABAP基础知识. 用于介绍一些ABAP中的基础知识.希望可以帮助到一些新学ABAP的朋友.  本文主要介绍ABAP中使用内表统计的几种方式 二 四种统计 ...

  7. 相机基础知识博客汇总

    工业相机成像原理 相机镜头工作原理 工业相机镜头基础知识 透镜.小孔和眼球成像原理 变焦.对焦.景深的理解

  8. 中公事业单位计算机模拟试题,事业单位考试计算机基础知识模拟试题汇总—单选题(2)...

    1. 在下面的描述中,正确的是____ A.外存中的信息可直接被CPU处理 B.计算机中使用的汉字编码和ASCII码是一样的 C.键盘是输入设备,显示器是输出设备 D.操作系统是一种很重要的应用软件 ...

  9. 示波器基础知识100问汇总

    1. 对一个已设计完成的产品,如何用示波器检测分析其可靠性? 答:示波器早已成为检测电子线路最有效的工具之一,通过观察线路关键节点的电压电流波形可以直观地检查线路工作是否正常,验证设计是否恰当.这对提 ...

最新文章

  1. AAAI 2021线下论文预讲会讲者征集
  2. 洛谷P5174 圆点
  3. php 未填写时隐藏提交按钮,php - [单击提交按钮时隐藏html,回显结果留在同一页面上,电子邮件表单结果示例提供 - SO中文参考 - www.soinside.com...
  4. c ++查找字符串_C ++类和对象| 查找输出程序| 套装5
  5. FPGA状态机跑飞原因分析
  6. linux NAND驱动之四:6410上的NAND读写流程
  7. linux查cpu命令4可以选择哪些运动,Linux 查看cpu 信息的命令及简单实例
  8. vscode ---- 插件
  9. python 查找文件夹下的文件名_python查找模式后面的文件夹中的所有文件名
  10. 在github上托管Maven存储库
  11. 给大家讲解一下 AIDL原理分析
  12. 乾隆年间贪污贿赂成风:皇帝敛财不逊臣子
  13. antv L7地图 绘制大小不受控制bug
  14. 微信自定义分享网页标题及内容
  15. 交换游戏 (记忆化搜索 状压)
  16. 测试高考体育成绩的软件,高考体育考试项目内容及成绩评定标准
  17. 自动化学报latex模板使用说明
  18. 零基础学习 iOS 开发
  19. LEARNING GOAL-CONDITIONED VALUE FUNCTIONS WITH ONE-STEP PATH REWARDS RATHER THAN GOAL- REWARDS
  20. 开源在线文档编辑工具_4个开源工具,可让您无忧地在线阅读

热门文章

  1. mysql常用系统函数归类
  2. Java数组实现五子棋功能
  3. python编程挑战——使用python实现恩格玛机(1)
  4. RCurl网络数据抓取
  5. Unity脚本各种[XXX]的用法
  6. 让其他CMS黯然失色的we7CMS
  7. 深度优先搜索——单词方阵(洛谷 P1101)
  8. 每日一题丨2020.05.27
  9. 分布式锁用Redis坚决不用Zookeeper?
  10. 2019年7月数据库流行度排行:Oracle王者归来获大幅增长