springboot容器无法获取@Autowired对象,报null对象空指针问题的解决方式

示例错误代码:

package com.uniin.ib.provider.iot.handle;@Slf4j
@Component
public class FireStringInboundHandler extends ChannelInboundHandlerAdapter {@Autowiredprivate RsFireMonitoringMapper rsFireMonitoringMapper;@Autowiredprivate RsFireAlertMapper rsFireAlertMapper;@Autowiredprivate RedisUtils redisUtils;@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {log.info("远程地址: " + ctx.channel().remoteAddress());if (msg == null) {log.warn("fire接收到的消息为null,跳过处理");return;}// 这里需要调用redis的工具类,无法获取一直为null,报错误空指针redisUtils.set("redisKey", "testRedisValue",60*1L, TimeUnit.SECONDS);}}

通过查询发现类加了@Component注解后,并没有被spring容器纳入管理,没法正常注册为bean

需要在类加载初始化时,把引用到的对象手动加载init初始化,才能正常使用。

package com.uniin.ib.provider.iot.handle;@Slf4j
@Component
public class FireStringInboundHandler extends ChannelInboundHandlerAdapter {@Autowiredprivate RsFireMonitoringMapper rsFireMonitoringMapper;@Autowiredprivate RsFireAlertMapper rsFireAlertMapper;@Autowiredprivate RedisUtils redisUtils;// 注意点,这里需要使用静态private static FireStringInboundHandler stringInboundHandler;// 容器加载完成后,在执行init()方法初始化,不加注解无法正常调用(注意点)//这个方法会在依赖注入完成后被自动调用。这通常用于初始化代码,比如打开数据库连接或者启动一些服务。@PostConstructpublic void init() {stringInboundHandler= this;stringInboundHandler.redisUtils = this.redisUtils;stringInboundHandler.rsFireMonitoringMapper = this.rsFireMonitoringMapper;stringInboundHandler.rsFireAlertMapper = this.rsFireAlertMapper;}@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {log.info("远程地址: " + ctx.channel().remoteAddress());if (msg == null) {log.warn("fire接收到的消息为null,跳过处理");return;}// 这里需要调用redis的工具类,无法获取一直为null,报错误空指针// 调用方式需要通过init初始化后才能用stringInboundHandler对象类去调用才能正常,不然报错空指针stringInboundHandler.redisUtils.set("redisKey", "testRedisValue",60*1L, TimeUnit.SECONDS);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/64939.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下学【MySQL】表中插入和查询的进阶操作(配实操图和SQL语句通俗易懂)

绪论​ 每日激励:挫折是会让我们变得越来越强大的重点是我们敢于积极的面对它。—Jack叔叔 绪论​: 本章是表操作的进阶篇章(没看过入门的这里是传送门,本章将带你进阶的去学习表的插入insert和查找select,本质也就是…

[Rust开发]actix_webmiddleware 中间件

actix_web::middleware 在 Actix Web 框架中扮演着重要的角色,它允许开发者在处理 HTTP 请求和响应的过程中插入自定义的逻辑。中间件可以在请求到达处理函数之前或响应返回给客户端之前执行,从而实现日志记录、身份验证、数据验证、错误处理等功能。 为…

WebLogic T3反序列化漏洞(CVE-2018-2628)--vulhub

WebLogic T3反序列化漏洞(CVE-2018-2628) WebLogic在通信过程中使用T3协议传输数据,涉及到了序列化和反序列化操作。 T3协议概述 T3协议是Oracle的私有协议,所以公开的相关资料比较少,这里结合其他师傅的博客简单对T3协议进行一个简要分析…

OpenFeign快速入门 示例:黑马商城

使用起因 之前我们利用了Nacos实现了服务的治理,利用RestTemplate实现了服务的远程调用。这样一来购物车虽然通过远程调用实现了调用商品服务的方法,但是远程调用的代码太复杂了: 解决方法 并且这种调用方式比较复杂,一会儿远程调用,一会儿本地调用。 因…

计算机的错误计算(一百九十)

摘要 用两个大模型计算cot(1.234). 其中,1.234是以弧度为单位的角度。结果保留10位有效数字。实验表明,两个的计算公式虽然不同,但是都是正确的。然而,数值计算则是有问题的---包括每一个中间运算与结果。 例1. 计算cot(1.234)…

【QSS样式表 - ⑥】:QPushButton控件样式

文章目录 QPushBUtton控件样式QSS示例 QPushBUtton控件样式 常用子控件 常用伪状态 QSS示例 代码: QPushButton {background-color: #99B5D1;color: white;font-weigth: bold;border-radius: 20px; }QPushButton:hover {background-color: red; }QPushButton:p…

深度学习与图像处理(国产深度学习框架——飞桨官方指定教材)

计算机视觉从小白到大师之路 《深度学习与图像处理(PaddlePaddle版)》这一本就够了 1.引言 随着人工智能技术的飞速发展,各行各业对深度学习、图像处理相关领域的人才需求日益迫切。本书旨在通过系统的理论讲解与丰富的实战案例&#xff0…

HCIA-Access V2.5_6_3_GPON关键技术

GPON关键技术 GPON关键技术包含三个,测距,DBA,下行AES加密。 为什么需要测距 由于每一个ONU到OLT的距离是不一样的,虽然上行有TDMA技术,让每一个ONU在不同的时间段发送数据,但是可能由于距离的原因&#x…

v3s点RGB屏 40pin 800x480,不一样的点屏,不通过chosen。

一、背景、目的、简介。 一般来说,通过uboot将屏幕参数传给kernel,是通过修改设备树。 uboot和kernel都需要屏幕点亮。uboot侧重于显示一张图片。而kernel则多是动画。 在这里,我先是找到了一个裸机点屏的代码。将其编译成静态库后&#x…

电脑丢失bcrypt.dll文件是什么原因?找不到bcrypt.dll文件修复办法来啦!

电脑运行时常见问题及解决方案:文件丢失、文件损坏与系统报错 作为一名软件开发从业者,深知电脑在日常使用中难免会遇到各种问题,如文件丢失、文件损坏和系统报错等。这些问题不仅影响工作效率,还可能带来数据丢失的风险。今天&a…

【自动驾驶】3 激光雷达③

5 激光雷达点云检测模型 🦋🦋🦋CenterPoint是Anchor‐Free的3D物体检测器,以点云作为输入,将三维物体在Bird‐View下的中心点作为关键点,基于关键点检测的方式回归物体的尺寸、方向和速度。相比于Anchor‐…

自动化测试框架playwright 常见问题和解决方案

自动化课程已经讲完了playwright框架,很多同学跃跃欲试,所谓实践出真知,这不在实践中就要到了一些问题,小编也给大家整理出来了,送个有需要的同学,记得点赞收藏哦~~ 01安装问题 问题描述: 在安…

Windows10 下通过 Visual Studio2022 编译 openssl 3.4 + POCO 1.14.1

Windows10 下通过 Visual Studio2022 编译 POCO库 1 POCO库简介2 环境准备2.1 VS Studio 2022 安装2.2 openssl 安装3 编译 POCO 1.14.13.1 下载源码3.2 修改编译配置3.2.1 修改 poco\Crypto 工程 引用 openssl 的配置3.2.2 修改 poco\NetSSL_OpenSSL 工程 引用 openssl 的配置…

厉害了多模态对齐!新思路直接发高区!小红书、国科大都在抢着发!

多模态是个非常热门的话题,这其中,“多模态对齐”已经被验证非常重要,它能够提升AI模型的跨模态理解和情感分析精度,是未来多模态大模型商业化的必要条件,研究热度不言而喻。 就说最近的大佬团队,小红书前…

ubuntu20.04安装imwheel实现鼠标滚轮调速

ubuntu20.04安装imwheel实现鼠标滚轮调速 Ubuntu 系统自带的设置中仅具备调节鼠标速度的功能,而无调节鼠标滚轮速度的功能。其默认的鼠标滚轮速度较为缓慢,在查看文档时影响尚可接受,但在快速浏览网页时,滚轮速度过慢会给用户带来…

MacOS安装MySQL

官网下载MySQL 苹果芯片选择ARM版本 安装过程中会要求你输入root的密码(不少于8位),这里设置为12345678 打开系统设置查看是否成功安装MySQL 配置MySQL环境变量 vi ~/.zshrc加入一行export PATH$PATH:/usr/local/mysql/bin 执行source ~/…

dolphinscheduler服务注册中心源码解析(三)RPC提供者服务整合注册中心注册服务实现源码

RPC提供者服务整合注册中心注册服务实现源码 1.概述2.源码解读思路3.实现2.1.应用服务的RPC服务接口定义2.1.1.MasterServer应用中提供的RPC接口服务2.1.2.WorkerServer应用中提供的RPC接口服务2.2.应用服务的RPC服务接口实现2.2.1.MasterServer应用中提供的RPC接口服务实现类2…

Leetcode Hot 100 【二叉树】104. 二叉树的最大深度

104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3…

WebDAV文件共享:将个人电脑变身为云存储,实现自由文件传输

WebDAV文件共享:将个人电脑变身为云存储,实现自由文件传输 引言:操作步骤搭建安装Internet Information Services (IIS) 管理器配置Internet Information Services (IIS) 管理器配置远程域名访问地址 引言: 相信很多朋友都有过把…

MySQL的分析查询语句

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…