先上问题:

java.lang.ClassCastException: com.ppdai.cbd.ddp.thirdparty.contract.bhxtzx.BHXTZXTask cannot be cast to java.lang.String

at org.springframework.data.redis.serializer.StringRedisSerializer.serialize(StringRedisSerializer.java:33)

at org.springframework.data.redis.core.AbstractOperations.rawValue(AbstractOperations.java:117)

at org.springframework.data.redis.core.DefaultListOperations.leftPush(DefaultListOperations.java:71)

at org.springframework.data.redis.core.DefaultBoundListOperations.leftPush(DefaultBoundListOperations.java:60)

at com.ppdai.realtime.datachannel.pullservice.entity.RedisQueue.pushFromHead(RedisQueue.java:63)

at com.ppdai.realtime.datachannel.pullservice.redisconfig.RedisTaskSender.sendTask(RedisTaskSender.java:35)

at com.ppdai.realtime.datachannel.pullservice.redisconfig.RedisTaskSender$sendTask.call(Unknown Source)

at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)

at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)

at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)

at com.ppdai.realtime.datachannel.pullservice.dataproviders.bohai.BohaiQueryProvider.afterGetData(BohaiQueryProvider.groovy:395)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)

at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)

at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52)

at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154)

at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)

看问题原因是序列化对象的时候使用的是 StringRedisSerializer, 本来以为是因为AutoConfig 导致加载了系统默认的RedisTemplate, 而自己定义了RedisTemplate没有加载,

但是非常疑惑的一点是默认的RedisTemplate使用的是 JdkSerializationRedisSerializer(如下代码),上面异常报的是使用redis value 使用StringRedisSerializer 导致的类型转化失败

public voidafterPropertiesSet() {super.afterPropertiesSet();boolean defaultUsed = false;if (defaultSerializer == null) {

defaultSerializer= newJdkSerializationRedisSerializer(

classLoader!= null ? classLoader : this.getClass().getClassLoader());

}if(enableDefaultSerializer) {if (keySerializer == null) {

keySerializer=defaultSerializer;

defaultUsed= true;

}if (valueSerializer == null) {

valueSerializer=defaultSerializer;

defaultUsed= true;

}if (hashKeySerializer == null) {

hashKeySerializer=defaultSerializer;

defaultUsed= true;

}if (hashValueSerializer == null) {

hashValueSerializer=defaultSerializer;

defaultUsed= true;

}

}if (enableDefaultSerializer &&defaultUsed) {

Assert.notNull(defaultSerializer,"default serializer null and not all serializers initialized");

}if (scriptExecutor == null) {this.scriptExecutor = new DefaultScriptExecutor(this);

}

initialized= true;

}

最后通过Alt + F7 (Find Usage) 发现下面这个代码

private Long incr(String key, longdelta){

RedisTemplate redisTemplate=getRedisTemplate()

ValueOperations operations =redisTemplate.opsForValue()

redisTemplate.setKeySerializer(newStringRedisSerializer())

redisTemplate.setValueSerializer(newStringRedisSerializer())returnoperations.increment(key, delta)

}

原来就是这里搞得鬼,将redisTemplate的ValueSerializer设置成了 StringRedisSerializer ,StringRedisSerializer参数是String类型的,因此就出现了类型转化错误。

附说明

redisTemplate需要序列化key,value,hashkey,hashvalue,  提供了很多序列化工具,什么Jackson、FastJson、JDKSerialization 也可以自己定义。

redisTamplate默认这四种都使用JDKSerialization做序列化,如果没有提供定义默认都用JDK。

cannot be cast to linux 环境,[Redis] ** cannot be cast to java.lang.String相关推荐

  1. ArrayMap java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Object[]

    错误堆栈: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Object[]at android. ...

  2. 在拦截器中获取请求参数,[Ljava.lang.String; cannot be cast to java.lang.String报错

    Map<String,Object> parametersmap=invocation.getInvocationContext().getParameters();//获取请求参数    ...

  3. Java报错:java.math.BigDecimal cannot be cast to java.lang.String

    从数据库取数字,转为string,报错: java.math.BigDecimal cannot be cast to java.lang.String 错误代码 Integer.parseInt(( ...

  4. “无效数字” ;java.lang.Integer cannot be cast to java.lang.String

    今天页面上突然查询不出数据,大致的sql语句是 select xx ,xxx from table a where a.lrmb in ( 6101060033, 61010503300, 61016 ...

  5. java.lang.ClassCastException: [B cannot be cast to java.lang.String

    java.lang.ClassCastException: [B cannot be cast to java.lang.String 错误代码行: public int addZTIncome(ZT ...

  6. java.lang.String cannot be cast to org.apache.flink.table.data.StringData

    完整报错: 16:54:56,851 INFO org.apache.hadoop.conf.Configuration.deprecation - io.bytes.per.checksum is ...

  7. 已解决java.lang.Integer cannot be cast to java.lang.String异常的正确解决方法,亲测有效!!!

    已解决java.lang.Integer cannot be cast to java.lang.String异常的正确解决方法,亲测有效!!! 文章目录 报错问题 解决方法 福利 报错问题 1.在执 ...

  8. org.springframework.boot.actuate.endpoint.EndpointId cannot be cast to java.lang.String 异常处理

    转自:https://blog.csdn.net/qq_38906421/article/details/84028240 java.lang.ClassCastException:    org.s ...

  9. SpringBoot统一返回处理出现cannot be cast to java.lang.String异常

    SpringBoot统一返回处理出现cannot be cast to java.lang.String异常 一 问题出现背景: 二 解决方案 三 异常原因分析 原因: 源码详细分析: 正常返回: 返 ...

最新文章

  1. 《Haskell趣学指南》—— 第1章,第1.2节小朋友的第一个函数
  2. oracle10G rac 10.2.0.1升级10.2.0.4
  3. 随机抽样java_java生成抽样随机数的多种算法
  4. android透明状态栏刘海屏,Android 修改dialog状态栏颜色兼容刘海屏
  5. jython语法入门
  6. mysql libs 5.1.73_【MySQL案例】mysql-libs-5.1.73-3.el6
  7. 惠农补贴一折通计算机审计方法,审计惠农补贴资金的方法有哪些
  8. MySQL 服务无法启动。服务没有报告任何错误。
  9. Java JDK下载与安装教程
  10. vue集成spreadjs
  11. 悼念毛星云(浅墨)老师
  12. QTabWidget 删除tab
  13. 计算机访问网络延迟越低越好吗,内存延迟参数是否越低越好
  14. 截取字符串中某一段数据
  15. java中Date类之GMT、UTC
  16. 加元预测:油价仍是关键驱动因素 - 加元/日元、美元/加元设置
  17. 程序员的算法趣题:Q09 落单的男女(Java版)
  18. Ubuntu18.04+Win10双系统安装步骤 问题排查
  19. InputStream类详解
  20. 【XJTUSE 计算机组成与结构笔记】第十三章 精简指令集计算机

热门文章

  1. fiddler模拟伪造请求
  2. Google Geocoding API---地理编码与反向地理编码
  3. 如果用计算机计算带有大括弧的数学题,小学一年级数学上册图画大括号应用题doc...
  4. 高通win10电脑软件兼容测试,微软把高通处理器装在了Win 10上,那又怎样呢?
  5. vc++实现悬浮窗,迅雷360悬浮球效果
  6. uniapp通过uni.addInterceptor实现路由拦截功能
  7. Python实例003:海龟绘图——小猪佩奇祝大家“2019新春快乐”
  8. 学生个人博客网页设计作品 学生个人网页模板 个人网页制作 HTML学生个人网站作业设计
  9. 中国电信发军医疗器械领域
  10. 22岁到72岁的男人对女人的要求