提交 | 用户 | 时间
|
e7c126
|
1 |
package com.iailab.framework.redis.config; |
H |
2 |
|
|
3 |
import cn.hutool.core.util.ReflectUtil; |
|
4 |
import com.fasterxml.jackson.databind.ObjectMapper; |
|
5 |
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; |
|
6 |
import org.redisson.spring.starter.RedissonAutoConfiguration; |
|
7 |
import org.springframework.boot.autoconfigure.AutoConfiguration; |
|
8 |
import org.springframework.context.annotation.Bean; |
|
9 |
import org.springframework.data.redis.connection.RedisConnectionFactory; |
|
10 |
import org.springframework.data.redis.core.RedisTemplate; |
|
11 |
import org.springframework.data.redis.serializer.RedisSerializer; |
|
12 |
|
|
13 |
/** |
|
14 |
* Redis 配置类 |
|
15 |
*/ |
|
16 |
@AutoConfiguration(before = RedissonAutoConfiguration.class) // 目的:使用自己定义的 RedisTemplate Bean |
|
17 |
public class IailabRedisAutoConfiguration { |
|
18 |
|
|
19 |
/** |
|
20 |
* 创建 RedisTemplate Bean,使用 JSON 序列化方式 |
|
21 |
*/ |
|
22 |
@Bean |
|
23 |
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { |
|
24 |
// 创建 RedisTemplate 对象 |
|
25 |
RedisTemplate<String, Object> template = new RedisTemplate<>(); |
|
26 |
// 设置 RedisConnection 工厂。😈 它就是实现多种 Java Redis 客户端接入的秘密工厂。感兴趣的胖友,可以自己去撸下。 |
|
27 |
template.setConnectionFactory(factory); |
|
28 |
// 使用 String 序列化方式,序列化 KEY 。 |
|
29 |
template.setKeySerializer(RedisSerializer.string()); |
|
30 |
template.setHashKeySerializer(RedisSerializer.string()); |
|
31 |
// 使用 JSON 序列化方式(库是 Jackson ),序列化 VALUE 。 |
|
32 |
template.setValueSerializer(buildRedisSerializer()); |
|
33 |
template.setHashValueSerializer(buildRedisSerializer()); |
|
34 |
return template; |
|
35 |
} |
|
36 |
|
|
37 |
public static RedisSerializer<?> buildRedisSerializer() { |
|
38 |
RedisSerializer<Object> json = RedisSerializer.json(); |
|
39 |
// 解决 LocalDateTime 的序列化 |
|
40 |
ObjectMapper objectMapper = (ObjectMapper) ReflectUtil.getFieldValue(json, "mapper"); |
|
41 |
objectMapper.registerModules(new JavaTimeModule()); |
|
42 |
return json; |
|
43 |
} |
|
44 |
|
|
45 |
} |