websocket 使用 spring 的service层 ,进而调用里面的 dao层 来操作数据库 ,包括redis、mysql等通用
1.前言
描述一下今天用websocket踩得坑 ---》空指针异常!
我想在websocket里面使用service 层的接口,从中获取数据库的一些信息 ,
使用 @Autowired 注解 接口 ,报错 空指针异常 !!!
查过资料才发现 ,websocket 无法使用注解注入bean ,因为每一次websocket的握手连接就像是new了一个对象,对是全新的
2.网上查找的代码 测试无法使用,截图留下笔记
然后去百度 博客 寻找解决答案 ,基本都是要重写 ApplicationContextAware 接口的方法 ,
测试发现仍然报空指针异常,抓取异常内容甚至为空找不到异常原因。。。
网上 提供的代码截图 :

使用方法:

报错结果;

3 .真正的解决办法 :
使用 ContextLoader.getCurrentWebApplicationContext().getBean( 【服务名称.class】); 即可

就这么简单,效率还高 !!!
测试截图:

但是有一个注意的地方,经过测试 这里的 getbean()方法里面只能使用 service的接口名,并且以 【 service名称.class 】 为key才可以, 无法使用 【serviceImpl.class】
并且 字符串 key也无法使用 【“service”】 【 “serviceImpl” 】都不能使用
原因不知道 ,百度 、博客都找不到关于这个的资料 ,以此为记录!
-------------------------
幸好 ,可以正常使用 ,感动的要哭
-------------------------
这得感谢一位博主的知识分享 ,原址 :https://blog.csdn.net/kxj19980524/article/details/85108047
websocket 使用 spring 的service层 ,进而调用里面的 dao层 来操作数据库 ,包括redis、mysql等通用的更多相关文章
- spring boot 扫描 其他jar包里面的 mapper xml
启动类配置扫描 goods.mapper为当前项目mapper路径 ,common.mpper为其他jar包. 1. 2.mybatis.mapper-locations=classpath*:map ...
- java中Action层、Service层和Dao层的功能区分
Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO只 ...
- [转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...
- Action层, Service层 和 Dao层的功能区分
Action/Service/DAO简介: Action是管理业务(Service)调度和管理跳转的. Service是管理具体的功能的. Action只负责管理,而Service负责实施. DAO ...
- web层直接调用 dubbo的服务,合适吗?
目前很多互联网app项目,都是采用这样的一个基本项目结构:即由后端提供Restful的api接口,然后供前端例如IOS.Android或者H5端去调用,如图: 在这种结构下,后台的代码分层常规一般会有 ...
- SSH框架中POJO层, Dao层,Service层, Action层的功能理解
pojo层就是对应的数据库表的实体类(如User类). dao层,一般可以再分为***dao接口和***daoImpl实现类,如userDao接口和userDaoImpl实现类,接口负责定义数据库cu ...
- service和Dao层有什么关系
Dao层:主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类 ...
- 四、spring集成ibatis进行项目中dao层基类封装
Apache iBatis(现已迁至Google Code下发展,更名为MyBatis)是当前IT项目中使用很广泛的一个半自动ORM框架,区别于Hibernate之类的全自动框架,iBatis对数据库 ...
- 使用springboot实现一个简单的restful crud——02、dao层单元测试,测试从数据库取数据
接着上一篇,上一篇我们创建了项目.创建了实体类,以及创建了数据库数据.这一篇就写一下Dao层,以及对Dao层进行单元测试,看下能否成功操作数据库数据. Dao EmpDao package com.j ...
随机推荐
- 第一章-Flink介绍-《Fink原理、实战与性能优化》读书笔记
Flink介绍-<Fink原理.实战与性能优化>读书笔记 1.1 Apache Flink是什么? 在当代数据量激增的时代,各种业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如 ...
- Mysql配置 主主同步
目录 一.准备 二.操作 A数据库操作 B数据库操作 A数据库操作 一.准备 1.两个数据库版本最好一致 2.两个数据库内数据保持一致,若不一致,可手动调整,比如A比B多一个库,那将这个库导入到B库, ...
- Svelte入门——Web Components实现跨框架组件复用(二)
在上节中,我们一起了解了如何使用Svelte封装Web Component,从而实现在不同页面间使用电子表格组件. Svelte封装组件跨框架复用,带来的好处也十分明显: 1.使用框架开发,更容易维护 ...
- Sentry 开发者贡献指南 - 前端(ReactJS生态)
内容整理自官方开发文档 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Map ...
- Git的基本使用(只是基本使用)
git上传 1.克隆到本地 git clone + git项目地址 2.添加文件 git add * 添加所有文件到本地仓库 3.查看状态 git status 4.标记 git commit -m ...
- LuoguP7375 [COCI2018-2019#5] Jarvis 题解
Content 有 \(n\) 架无人机,每架无人机都有一个当前属性值 \(a_i\) 和出战属性值 \(b_i\).你可以给每架无人机的当前属性值同时加一个数 \(x\)(但只能做一次),使得能够出 ...
- java 、abstract修饰的【抽象类】【比如几何图形类】
现实中问题引入 现实中一类具有共同特征的类,但是无法具体实现.,比如我们定义了一个几何类,叫做Shape,我们有一个方法要计算周长,直接在每个子类实现虽然可以,但是无法通过Shape定义的实例来访问到 ...
- 如何获得Spring容器里管理的Bean,。不论是Service层,还是实体Dao层
如何获得Spring容器里管理的Bean,.不论是Service层,还是实体Dao层, 下面的这个必须配置,否则必出错,空指针 下面的这个是代码 而获得bean代码如下: serviceManager ...
- Java 自动给方法加注释
在代码的方法中先写/**,然后按回车键,即是键盘上的Enter键 但是首先得配置一下,配置如图所示:
- 使用xlsx实现Excel导入
需求 实现在系统里批量导入数据,通过上传一个excel文件,前端将文件处理为json数据发送给后端.(最好与后端定义好上传的文件模板,方便处理数据) 实现 使用xlsx: xlsx的github地址: ...