今天想测一个RedisTemplate的问题,于是用 Spring Initializr 创建了一个 Spring Boot 项目,并引入了 Spring Data Redis。
pom文件中会给我引入对应的包:
自定义 RedisTemplate 配置,设置 Value 序列化方式为 GenericJackson2JsonRedisSerializer
@Configurationpublic class RedisTemplateConfig { @Bean public RedisTemplate
简单配好后启动项目,直接提示找不到Jackson相关类的异常:java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingException
下面截取了部分错误日志
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'redisTemplate' defined in class path resource [com/example/redistemplatesourcecodedemo/config/RedisTemplateConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.redis.core.RedisTemplate]: Factory method 'redisTemplate' threw exception; nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/JsonProcessingExceptionat org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
解决方法 看了下spring-boot-starter-data-redis的pom,确实没有引入Jackson,那我们就引入。
Spring 官方已经有了一个spring-boot-starter-json依赖,我们直接引进来:
再次启动,问题解决。
问题回顾 之前项目中没有增加此依赖,也正常啊,是为什么呢?
经过一番排查,原来之前项目引入了spring-boot-starter-web依赖,它是pom已经引入了该依赖了。