javascript
SpringBoot整合Redis要注意的那些
前言
昨天自己在重新學習SpringBoot整合Redis時,遇到了一個問題java.lang.NoClassDefFoundError: org/apache/commons/pool2/impl/GenericObjectPoolConfig,錯誤很明顯找不到需要的類。下面主要記錄一下錯誤是怎么出線的,并且如何解決。
錯誤回顧
在SpringBoot 2.0+后,默認的redis client是lettuce而不是一直使用的jedis。此次出現的錯誤也是因為使用了lettuce出現的。
使用時的配置如下所示:
pom使用最小的依賴進行測試驗證。
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope> </dependency>測試代碼,期望結果是控制臺顯示 123456,表明redis可以正常使用。
@SpringBootTest public class RedisServiceTest {@Autowiredprivate RedisTemplate<Object, Object> redisTemplate;@Testpublic void testRedis() {redisTemplate.opsForValue().set("test", "123456");String abec = (String) redisTemplate.opsForValue().get("test");System.out.println(abec);} }測試驗證結果:
問題原因
跟蹤一下源碼發現就能輕松的發現問題:
既然使用的事lettuce client,程序中會通過yml配置匹配到LettuceConnectionConfiguration來創建連接池,所以看此類的源碼就能得到答案。
最后執行的方法截圖能明顯發現錯誤
😂最后發現就是很簡單的問題,很單純的沒有引入commons-pool2的jar包。問題原因就是自己不按照人要求做事,還逼逼賴賴~~ (無能的人兒啊)
解決方法
📢那就如她所愿,增加上新的pom依賴
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId> </dependency>🤣賓狗-------驗證通過
當然還有一種方法,就是yml配置文件中不要配置lettuce.pool配置項,這樣初始化就執行默認的連接池了。🤔但是好像不配置的話又不符合企業級應用要求,所以還是當一個聽話的好孩子吧,這樣在之后出錯的話就會有人站出來為你說一句: “他還是個孩子啊!!~”
🔚
這次記錄就到這里啦~ 獻給努力的我們。
總結
以上是生活随笔為你收集整理的SpringBoot整合Redis要注意的那些的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA实现一个图片上传预览功能
- 下一篇: gradle idea java ssm