diff --git a/pom.xml b/pom.xml index 9db5828e..d8a89e75 100644 --- a/pom.xml +++ b/pom.xml @@ -90,6 +90,11 @@ spring-boot-starter-data-redis + + org.springframework.boot + spring-boot-starter-cache + + org.springframework.boot spring-boot-starter-aop diff --git a/src/main/java/com/youlai/system/config/RedisCacheConfig.java b/src/main/java/com/youlai/system/config/RedisCacheConfig.java new file mode 100644 index 00000000..2f7bcb98 --- /dev/null +++ b/src/main/java/com/youlai/system/config/RedisCacheConfig.java @@ -0,0 +1,71 @@ +package com.youlai.system.config; + +import org.springframework.boot.autoconfigure.cache.CacheProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.cache.RedisCacheConfiguration; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.cache.RedisCacheWriter; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.serializer.RedisSerializationContext; +import org.springframework.data.redis.serializer.RedisSerializer; + +/** + * Redis 缓存配置 + * + * @author haoxr + * @since 2023/12/4 + */ +@EnableCaching +@EnableConfigurationProperties(CacheProperties.class) +@Configuration +public class RedisCacheConfig { + + /** + * 自定义 RedisCacheManager + *

+ * 修改 Redis 序列化方式,默认 JdkSerializationRedisSerializer + * + * @param redisConnectionFactory {@link RedisConnectionFactory} + * @param cacheProperties {@link CacheProperties} + * @return {@link RedisCacheManager} + */ + @Bean + public RedisCacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory, CacheProperties cacheProperties){ + return RedisCacheManager.builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory)) + .cacheDefaults(redisCacheConfiguration(cacheProperties)) + .build(); + } + + /** + * 自定义 RedisCacheConfiguration + * + * @param cacheProperties {@link CacheProperties} + * @return {@link RedisCacheConfiguration} + */ + @Bean + RedisCacheConfiguration redisCacheConfiguration(CacheProperties cacheProperties) { + + RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); + + config = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.string())); + config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.json())); + + CacheProperties.Redis redisProperties = cacheProperties.getRedis(); + + if (redisProperties.getTimeToLive() != null) { + config = config.entryTtl(redisProperties.getTimeToLive()); + } + if (!redisProperties.isCacheNullValues()) { + config = config.disableCachingNullValues(); + } + if (!redisProperties.isUseKeyPrefix()) { + config = config.disableKeyPrefix(); + } + config = config.computePrefixWith(name -> name + ":");//覆盖默认key双冒号 CacheKeyPrefix#prefixed + return config; + } + +} diff --git a/src/main/java/com/youlai/system/controller/SysRoleController.java b/src/main/java/com/youlai/system/controller/SysRoleController.java index 46dcfa87..a39d321a 100644 --- a/src/main/java/com/youlai/system/controller/SysRoleController.java +++ b/src/main/java/com/youlai/system/controller/SysRoleController.java @@ -19,6 +19,7 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import jakarta.validation.Valid; + import java.util.List; @Tag(name = "03.角色接口") @@ -29,7 +30,7 @@ public class SysRoleController { private final SysRoleService roleService; - @Operation(summary = "角色分页列表" ) + @Operation(summary = "角色分页列表") @GetMapping("/page") public PageResult getRolePage( @ParameterObject RolePageQuery queryParams @@ -44,7 +45,7 @@ public class SysRoleController { List