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

news2024/12/25 14:15:12

示例错误代码:

package com.uniin.ib.provider.iot.handle;


@Slf4j
@Component
public class FireStringInboundHandler extends ChannelInboundHandlerAdapter {


	@Autowired
	private RsFireMonitoringMapper rsFireMonitoringMapper;

	@Autowired
	private RsFireAlertMapper rsFireAlertMapper;

	@Autowired
	private RedisUtils redisUtils;

    @Override
	public 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 {


	@Autowired
	private RsFireMonitoringMapper rsFireMonitoringMapper;

	@Autowired
	private RsFireAlertMapper rsFireAlertMapper;

	@Autowired
	private RedisUtils redisUtils;

    // 注意点,这里需要使用静态
    private static FireStringInboundHandler stringInboundHandler;

    // 容器加载完成后,在执行init()方法初始化,不加注解无法正常调用(注意点)
    //这个方法会在依赖注入完成后被自动调用。这通常用于初始化代码,比如打开数据库连接或者启动一些服务。
    @PostConstruct
	public void init() {
        
        stringInboundHandler= this;
		stringInboundHandler.redisUtils = this.redisUtils;
		stringInboundHandler.rsFireMonitoringMapper = this.rsFireMonitoringMapper;
		stringInboundHandler.rsFireAlertMapper = this.rsFireAlertMapper;

    }

    @Override
	public 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.coloradmin.cn/o/2265325.html

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

相关文章

计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

oracle: create new database

用database configuration Assistant 引导创建数据库。记得给system,sys 设置自己的口令,便于添加新操作用户。 创建操作用户: -- 别加双引号,否则,无法用 create user geovindu identified by 888888; create user geovin identi…

开源低代码平台-Microi吾码 打印引擎使用

引言 在开发中,会遇到很多记录的表单数据需要下载打印下来使用到线下各种应用场景中。在传统的方法中可能是需要先导出数据,然后将数据填入word表格中在打印下来。 但Microi吾码提供了一项新功能,便是打印引擎。打印引擎即可在线设计…

android studio更改应用图片,和应用名字。

更改应用图标,和名字 先打开AndroidManifest.xml文件。 更改图片文件名字( 右键-->构建-->重命名(R))

QT的前景与互联网岗位发展

qt是用来干什么的 --》桌面应用开发(做电脑的应用程序,面对客户端)。 主要用于开发跨平台的应用程序和用户界面(UI)。它是一个全面的C库集合,提供了构建软件应用所需的各种工具和功能。 客户端开发的重…

【目标跟踪综述及关键技术】

1.多目标跟踪任务介绍 定义 多目标跟踪旨在将视频序列中感兴趣的目标检测出来,并赋予每个目标单独的编号,在整个序列中形成目标的轨迹。 分类 online:算法在推理目标身份过程中,只能看见当前帧以及之前的帧(关联&a…

重温设计模式--模板方法模式

文章目录 一、模板方法模式概述二、模板方法模式UML图三、优点1代码复用性高2可维护性好3扩展性强 四、缺点五、使用场景六、C 代码示例1七、 C 代码示例2 一、模板方法模式概述 定义:定义一个操作中的算法骨架,而降一些步骤延迟到子类中。模板方法使得…

@vue/cli启动异常:ENOENT: no such file or directory, scandir

参考:https://blog.csdn.net/qq_44355188/article/details/122239566 首先异常报错是:ENOENT: no such file or directory, scandir ‘D:\Data\Project\VueProject\hello\node_modulesvue\cli-plugin-eslint\locales’;我的vue/cli版本是 4.5.15 重点是…

Jenkins集成部署(图文教程、超级详细)

一、CI/CD 的概念 ​ CI/CD一般包含三个概念: 持续集成(Continuous Integration ,CI) 持续交付(Continuous Delivery) 持续部署(Continuous Deploy) ​ CI/CD 是现代软件开发的重要…

2.在 Vue 3 中使用 ECharts 实现动态时间轴效果

在前端开发中,时间轴(Timeline)是一种常见且有效的方式来展示时间相关的数据。在本篇文章中,我们将展示如何在 Vue 3 项目中使用 ECharts 创建一个具有动态时间范围的时间轴,并添加了今日时间的标记以及通过按钮来前进…

【EthIf-13】EthIfGeneral容器配置-01

1.EthIfGeneral类图结构 下面是EthIfGeneral配置参数的类图,比较重要的参数就是配置: 接收中断是否打开发送确认中断是否打开EthIf轮询周期 1.EthIfGeneral参数的含义

卓软计量业务管理平台 image.ashx 任意文件读取漏洞复现

0x01 产品简介 卓软计量业务管理平台是一款专为计量测试检定机构设计的信息化管理系统。随着社会经济的不断发展,计量测试检定机构面临的管理规范化、技术水平、检测效率、服务能力以及行业竞争等问题日益增多。卓软计量业务管理平台旨在通过信息化手段,帮助机构实现业务管理…

BCSP-X 2024 Scratch图形化编程 小学低年级组 真题

BCSP-X 2024-2 图形化编程 小学低年级组 真题 题目总数:40 总分数:100 选择题 第 1 题 单选题 在下面各世界顶级的奖项中,为计算机科学与技术领域做出杰出贡献的科学 家设立的奖项是?( ) A. 奥斯卡奖 B. 诺贝尔奖 C. 菲尔兹…

GCP GCA认证考试Case错题库1(JenciMart+Helicopter+EHR)

GCP GCA认证考试Case错题库1(JenciMartHelicopterEHR) 整理by Moshow郑锴https://zhengkai.blog.csdn.net/ JenciMart 在生产和开发资源之间进行管理职责分离的最小权限模型中,最佳实践是每个应用程序的每个阶段都有自己的项目。这种设置确保权限是细化的&#xf…

centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!

在 CentOS 系统中,权限管理是操作系统的核心功能之一,确保不同用户和进程对文件、目录以及设备的访问被合理控制。 权限系统主要包括传统的 Unix 权限模型、特殊权限(SetUID、SetGID、Sticky 位)和更精细的访问控制列表&#xff…

HarmonyOS NEXT 技术实践-基于基础视觉服务实现骨骼点识别

本示例展示了如何在HarmonyOS Next中实现基于基础视觉服务的骨骼点识别功能。骨骼点识别是计算机视觉中的一项重要技术,广泛应用于运动分析、健身监控和增强现实等领域。通过使用HarmonyOS Next提供的视觉API,开发者能够轻松地对人物图像进行骨骼点检测&…

【RAG实战】语言模型基础

语言模型赋予了计算机理解和生成人类语言的能力。它结合了统计学原理和深度神经网络技术,通过对大量的样本数据进行复杂的概率分布分析来学习语言结构的内在模式和相关性。具体地,语言模型可根据上下文中已出现的词序列,使用概率推断来预测接…

workman服务端开发模式-应用开发-vue-element-admin挂载websocket

一、项目根目录main.js添加全局引入 import /utils/websocket 二、在根目录app.vue 中初始化WebSocket连接 <template><div id"app"><router-view /></div> </template><script>import store from ./store export default {n…

2024-12-24 NO1. XR Interaction ToolKit 环境配置

文章目录 1 软件配置2 安装 XRToolKit3 配置 OpenXR4 安装示例场景5 运行测试 1 软件配置 Unity 版本&#xff1a;Unity6000.0.26 ​ 2 安装 XRToolKit 创建新项目&#xff08;URP 3D&#xff09;&#xff0c;点击进入 Asset Store。 进入“Unity Registry”页签&#xff0…

华为手机鸿蒙4.2连接不上adb

1、下载HiSuite华为手机助手 https://consumer.huawei.com/cn/support/hisuite/ 2、安装后点连接 3、就可以adb连接了