From c0afe9e2a9c26b9cfeccb0cc99041630de131545 Mon Sep 17 00:00:00 2001
From: wangshun <932054296@qq.com>
Date: Thu, 4 Sep 2025 18:11:18 +0800
Subject: [PATCH] =?UTF-8?q?=E8=BD=BB=E9=87=8F=E7=BA=A7redis=E7=BC=93?=
=?UTF-8?q?=E5=AD=98=E8=BF=BD=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
本次主要改动范围:
1.分类列表缓存
2.标签列表缓存
追加的新类库
1.redis
2.jsr310→java8时间类localdatetime无法解析的问题
3.jaskson-hibernate6->hibernate 字段懒加载问题
其他改动
1.修改了初始化脚本的用户名,追加密码说明
---
backend/pom.xml | 13 +++
.../com/openisle/config/CachingConfig.java | 109 ++++++++++++++++++
.../src/main/java/com/openisle/model/Tag.java | 4 +-
.../com/openisle/service/CategoryService.java | 17 ++-
.../java/com/openisle/service/TagService.java | 16 +++
.../src/main/resources/application.properties | 5 +
.../main/resources/db/init/init_script.sql | 7 +-
7 files changed, 163 insertions(+), 8 deletions(-)
create mode 100644 backend/src/main/java/com/openisle/config/CachingConfig.java
diff --git a/backend/pom.xml b/backend/pom.xml
index 218e73248..97d8c7f65 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -30,6 +30,19 @@
org.springframework.boot
spring-boot-starter-amqp
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-hibernate6
+ 2.20.0
+
org.slf4j
slf4j-api
diff --git a/backend/src/main/java/com/openisle/config/CachingConfig.java b/backend/src/main/java/com/openisle/config/CachingConfig.java
new file mode 100644
index 000000000..ded16138a
--- /dev/null
+++ b/backend/src/main/java/com/openisle/config/CachingConfig.java
@@ -0,0 +1,109 @@
+package com.openisle.config;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
+import com.fasterxml.jackson.datatype.hibernate6.Hibernate6Module;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import org.springframework.cache.CacheManager;
+import org.springframework.cache.annotation.EnableCaching;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.data.redis.cache.RedisCacheConfiguration;
+import org.springframework.data.redis.cache.RedisCacheManager;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.RedisSerializationContext;
+import org.springframework.data.redis.serializer.RedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+import java.time.Duration;
+
+/**
+ * Redis 缓存配置类
+ * @author smallclover
+ * @since 2025-09-04
+ */
+@Configuration
+@EnableCaching
+public class CachingConfig {
+
+ // 标签缓存名
+ public static final String TAG_CACHE_NAME="openisle_tags";
+ // 分类缓存名
+ public static final String CATEGORY_CACHE_NAME="openisle_categories";
+
+ /**
+ * 自定义Redis的序列化器
+ * @return
+ */
+ @Bean()
+ @Primary
+ public RedisSerializer