当前位置: 首页 > news >正文

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.lryc.cn/news/509548.html

相关文章:

  • 服务器数据恢复—Lustre分布式文件系统下服务器节点进水的数据恢复案例
  • 由于这些关键原因,我总是手边有一台虚拟机
  • word无法创建工作文件,检查临时环境变量。
  • 照亮技术传播之路:构建卓越的技术文档
  • 20241225在ubuntu20.04.5下监控SSD
  • Flink定时器
  • 《算力互联互通标准体系1.0》发布,为算力互联成网发展提供指导框架
  • 视频监控平台:Liveweb视频汇聚融合平台智慧安防视频监控应用方案
  • STM32串口第一次接收数据时第一个字节丢失的问题
  • Zookeeper基本命令解析
  • RustDesk远程及自建服务器搭建教程
  • 广州大彩串口屏安卓/linux触摸屏四路CVBS输入实现同时显示!
  • Python:模拟(包含例题)
  • Python OCR 文字识别
  • 阿里巴巴2017实习生笔试题(二)
  • Docker安装与使用
  • 通过nginx设置一个图片服务器,并使用 Nginx 作为反向代理
  • MacOS M3源代码编译Qt6.8.1
  • 【Pytorch实用教程】PyTorch 自带的数据集全面解读
  • Flask使用的正例和反例
  • 2024年河北省职业院校技能大赛云计算应用赛项赛题第2套(私有云)
  • 我的软件架构师——Java 职位面试经历。
  • npm error code ETIMEDOUT
  • (11)(3.2) ESC信号问题
  • Postman最新接口自动化持续集成
  • windows nacos安装配置
  • 重温设计模式-外观模式和适配器模式的异同
  • 数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误
  • 云原生后端开发(一)
  • 实现用户登录系统的前后端开发