解决websocket使用@Autowired、@Value获取值为null解决方法

news/2025/2/13 2:29:34/

解决webSocker中使用@Value获取配置文件中值为null

  • 1.(常规写法)在webSocker中使用 @Value 取值为null
  • 2.原因分析
  • 3.解决问题

1.(常规写法)在webSocker中使用 @Value 取值为null

@Component
@ServerEndpoint(value = "/webSocket")
@Slf4j
public class WebSocketServer {@Value("${url}")private String url;
}

2.原因分析

  1. @ServerEndpoint表示这是一个websocket服务端类,根本原因在于:spring管理的都是单例(singleton)和 websocket (多对象)相冲突。
  2. websocket多用于客户端与服务端快速通信:聊天、实时输出日志等场景,这意味着每一个客户端请求服务端都会生成一个新的websocket实例,spring 仅仅针对@component@controller注解完成单例模式管理任务(注意仅仅这一次、这一个对象赋值了)后续随着客户单端访问 websocket不断进行实例化(这些对象不是由spring管理的,所以启动过程并无法给后续的实际处理websocket会话的实例赋值)。不改变方法的话每个 websocket 对象的 注入对象值得都是 null。

3.解决问题

将要注入的对象设为类级别的变量,并通过在方法上使用@Autowired@Value对变量进行初始化,进而使变量不为空:

@Component
@ServerEndpoint(value = "/webSocket")
@Slf4j
public class WebSocketServer {//@Value("${url}") ! 注解掉//static为关键private static String url;@Value("${url}")public void setScadaUrl(String scadaUrl) {this.url= url;}
}

http://www.ppmy.cn/news/1387.html

相关文章

远程桌面树莓派【内网穿透】

本篇文章主要分享如何在公网环境下,远程桌面连接家里的树莓派。 远程桌面环境,我们选择通过XRDP来实现,它内部使用的是windows远程桌面的协议。 而由于现在普遍处于大内网环境,绝大部分人都没有公网IP,所以我们这里用…

FFmpeg二次开发

本文主要讲解 FFmpeg 的二次开发,ffmpeg.exe 的命令行功能特别强大,很多需求都能直接用命令行实现,但是总有一些需求用 命令行实现不太好做。 而你实现那些特殊需求,通常需要把 ffmpeg.exe 里面的某部分代码抄过来,本…

MySQL 中的 sql_mode 选项以及配置

MySQL 中的 sql_mode 选项以及配置 目录MySQL 中的 sql_mode 选项以及配置一、查询与设置 sql_mode1、查询 sql_mode2、设置 sql_mode(1)通过命令设置(2)在配置文件中设置二、sql_mode 支持的模式1、ANSI 模式(宽松模式…

html5期末大作业:基于HTML+CSS技术实现——传统手工艺术雕刻网站(3页)

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

(附源码)node.js电商管理系统 毕业设计 251001

node.js电商管理系统 摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,电商管理系统当然也不能排除在外。电商管理系统 是以实际运用为开发背景,运用软件工程开…

用Python做个学生管理系统,这不简简单单

前言 最近因为疫情,各大高校都开始放假了,要不就是回家上网课 我朋友的老师真有趣,硬是要我朋友做个学生管理系统打包成exe文件发给他,才能回家 这不就找上我来了,我写完就顺便发篇文章咯 准备工作 环境准备 Pyth…

html静态网站基于游戏网站设计与实现共计10个页面 (仿地下城与勇士游戏网页)

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

Springboot整合mybatis多数据源

Mybatis中如何配置多数据源 一 什么情况下会用到多数据库? 场景1: 一个商城网站,一个游戏网站,商城网站已经做好,游戏网站正在开发,游戏网站上的很多道具需要用到商城网站的产品数据,这种情况…