RedisTemplate报空指针错误
在SpringCloud项目中写了一个redis存储的工具类,使用时总是报空指针错误:
--- [nio-8001-exec-3] c.t.d.c.utils.exception.ExceptionUtil : java.lang.NullPointerException
at com.tfjybj.dtc.crawl.util.CrawlProgressUtil.<init>(CrawlProgressUtil.java:34)
原代码如下:
public class CrawlProgressUtil {@Resourceprivate RedisTemplate redisTemplate;//redis 命名规范 项目名称+服务名称+类名+自定义名private static String redis_key = "DTC:CRAWL:BlogServiceImpl" +":crawlBlogInfo:";HashMap<String, Object> crawlProgressMap = new HashMap<>(2);public CrawlProgressUtil() {// 将redis默认的序列化方式改为String序列化方式redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));}public void nowCrwalProgress(Integer now, Integer all, String taskName) {//将当前爬取进度存到rediscrawlProgressMap.put("currentProgress", now);crawlProgressMap.put("allProgress", all);redisTemplate.opsForHash().putAll(redis_key + taskName,crawlProgressMap);}}
经过调试发现是RedisTemplate注入的问题,语法上没发现错误,也不是注入方式的问题,上网搜索发现原来RedisTemplate的注入得分情况:Spring注入和非Spring注入,我这个工具类在Spring之外,属于非Spring注入(可简单理解为没在Service层注入),但非Spring注入不是用@Resource这种方式,应该写配置。查了查非Spring注入的方式,觉得代码有点多,我也不太理解,就改造了一下这个工具类,让RedisTemplate在Service层注入,将注入的redisTemplate通过传参的方式传入工具类中,一下为改正后的代码:
public class CrawlProgressUtil {//redis 命名规范 项目名称+服务名称+类名+自定义名private static String redis_key = "DTC:CRAWL:BlogServiceImpl" +":crawlBlogInfo:";private RedisTemplate redisTemplate;HashMap<String, Object> crawlProgressMap = new HashMap<>(2);public CrawlProgressUtil(RedisTemplate redisTemplate) {// 将redis默认的序列化方式改为String序列化方式redisTemplate.setKeySerializer(new StringRedisSerializer());redisTemplate.setValueSerializer(new StringRedisSerializer());redisTemplate.setHashKeySerializer(new StringRedisSerializer());redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));this.redisTemplate = redisTemplate;}public void nowCrwalProgress(Integer now, Integer all, String taskName) {//将当前爬取进度存到rediscrawlProgressMap.put("currentProgress", now);crawlProgressMap.put("allProgress", all);redisTemplate.opsForHash().putAll(redis_key + taskName,crawlProgressMap);}
}
使用方式:
在Service层实现类中注入:
@Service
public class CSDNCommentServiceImpl implements CSDNCommentService {@Resourceprivate RedisTemplate redisTemplate;//爬取的业务类//后边代码略
}
在需要存redis的位置实例化工具类并传参:
CrawlProgressUtil cpu = new CrawlProgressUtil(redisTemplate);
RedisTemplate报空指针错误相关推荐
- 切记切记:Spring配置文件中,Component-scan无法扫描到的类中的自动装配对象无法被调用,报空指针错误。...
Spring单例注入,单例对象可设置成Spring元件. 只有Spring的元件中@Autowired才有用,在普通类中@Autowired虽然不会编译报错,但运行时会报空指针错误. 转载于:http ...
- java怎么通过坐标定位控件_[已解决] 可以定位到控件, 但每次执行 click () 方法会报空指针错误 java.lang.NullPointerException...
问题描述: 正常启动 appium 服务, 在 eclipse 中右键 Run as TestNG Test 之后, apk 可以正常安装并启动, 但是总会在 btn.click();处报错, 错误为 ...
- tomcat启动一直报空指针错误
今天部署项目的时候报出这样的错误: 十一月 28, 2013 2:30:02 下午 org.apache.coyote.http11.AbstractHttp11Processor process S ...
- android适配器报空指针错误,适配器总是出现空指针问题
问题描述: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.administrator.m ...
- ajax提交file空指针,excel导入上传文件报空指针错误
页面入口 全选 导入 导出 ${msg['globals.button.delete.more']} 导出js function excelImport() { top.layer.open({ ty ...
- jdbc mysql 存储过程执行失败_JDBC连接执行MySQL存储过程报空指针或权限错误
JDBC连接执行MySQL存储过程报空指针或权限错误 最近使用root用户编写了几个存储过程,但是使用普通用户通过JDBC连接执行却报错: java.lang.NullPointerException ...
- springboot项目导入Redis依赖后在测试类中无法使用(RedisTemplate),报空指针
问题描述: 在springboot项目导入Redis依赖后,在测试类中无法使用(RedisTemplate),报空指针 前提是都已经添加了注入注解: 添加了注解后还是会报错: 解决方法: 在启动类中加 ...
- java hash=0报空指针_怎么报空指针异常错误?
源自:2-2 开发第一个自定义标签 怎么报空指针异常错误? java.lang.NullPointerException at org.apache.tomcat.util.descriptor.tl ...
- java:数字转string 报空指针_超干货详解:kotlin(4) java转kotlin潜规则
前言 以一个java老鸟的角度,如何去看 kotlin. Java源代码应该如何用Kotlin重构. 如何正确学习kotlin并且应用到实际开发中.本文将会探究. 本文分两大块,重难点和潜规则. 重难 ...
最新文章
- 论文简述 | EAO-SLAM:基于集成数据关联的单目半稠密物体级SLAM
- TC260-001《汽车采集数据处理安全指南》
- 微信公众号新功能-原创声明、赞赏功能、评论管理、页面模版
- DataGridView 分页显示
- 7-11 堆栈操作合法性 (20 分)以及堆栈讲解(c语言实现)
- 工作128:element上传组件时候的钩子--event里面有数据参数
- Tomcat 中文路径乱码
- 学习一个Vue模板项目
- Android开源库--Gson谷歌官方json解析库
- Visual Studio 2013下载及其安装
- 嵌入式软件工程师笔试面试指南目录
- 【汇编与接口】并行接口8255芯片实验
- python如何判断tcp异常断开_TCP socket如何判断连接断开
- iOS之Category和Extention的区别
- pycharm远程连接服务器,同步代码,使用GPU
- EFPower tool 使用时发生的异常
- B站收藏备份工具设计和实现 Bilibili Memory 哔哩哔哩记忆
- ubuntu16.04安装ROS Kinetic(保姆式安装)
- Intel 11代 CPU 更新Win 10 20H2 后显示问题
- 免费报名参加“大数据时代的大数据分析与展现”技术分享会
热门文章
- error LNK2001: unresolved external symbol
- 【C++】初窥C++
- Unite Training Day报名开启,打造精彩游戏世界
- 中国奥运会成绩,知道多少?13张图告诉你
- 天猫店铺抽取的红包在哪里领取看,关于淘宝购物分享优惠商品的群
- 用matlab刻度尺,刻度尺如何使用
- SEM优化教程第5讲-百度竞价账户计划、单元搭建原则。
- LeetCode——552. 学生出勤记录 II(Student Attendance Record II)[困难]——分析及代码(Java)
- C#windows车库信息管理系统
- 基于工业5G网关的建筑机器人应用