SpringBoot 2.x整合Redis配置,使用Json序列化

本文介绍了如何在SpringBoot 2.x中配置Redis以使用Json序列化替代默认的JDK序列化。通过创建实体类、mapper、service和controller,并在config类中定制RedisConfig,实现了缓存数据以Json形式存储。@Cacheable注解用于将数据存入缓存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringBoot 2.x Redis配置不使用默认JDK序列化,自定义配置使用Json序列化

自定义配置在config类,前面的类都是为了测试演示转换json成功没,所以可以直接跳过.

首先创建一个实体类实现Serializable接口:

public class Employee implements Serializable {
    private Integer id;
    private String lastName;
    private String email;
    private Integer gender;
    private Integer dId;

    public Employee() {
        super();
    }

    public Employee(Integer id, String lastName, String email, Integer gender, Integer dId) {
        super();
        this.id = id;
        this.lastName = lastName;
        this.email = email;
        this.gender = gender;
        this.dId = dId;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }

    public Integer getdId() {
        return dId;
    }

    public void setdId(Integer dId) {
        this.dId = dId;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", lastName='" + lastName + '\'' +
                ", email='" + email + '\'' +
                ", gender=" + gender +
                ", dId=" + dId +
                '}';
    }
}

mapper类:
(只写了一个简单的查询)

@Mapper
public interface DepartmentMapper {
    @Select("select * from department where id=#{id}" )
    public Department getDeptById(Integer id);
}

service类:

@Service
public class DeptService {
    @Autowired
    DepartmentMapper departmentMapper;

    @Cacheable(value = "dept" )
    public Department getDeptById(Integer id){
        System.out.println("查询部门:"+id);
        Department department = departmentMapper.getDeptById(id);
        return department;
    }
}

controller类:

@RestController
public class DeptController {
    @Autowired
    public DeptService deptService;
    @GetMapping("/dept/{id}")
    public Department getDept(@PathVariable("id") Integer id){
       return deptService.getDeptById(id);
    }
}

config类配置RedisConfig:

@Configuration
public class MyRedisConfig {
    @Bean
    public RedisTemplate<Object, Object> empRedisTemplate(RedisConnectionFactory redisConnectionFactory)throws UnknownHostException {
        RedisTemplate<Object,Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);
        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
        template.setDefaultSerializer(serializer);
        return template;
    }

    @Bean
    public CacheManager cacheManager(RedisConnectionFactory factory){
        RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                .entryTtl(Duration.ofDays(1))
                .disableCachingNullValues()
                .serializeKeysWith(RedisSerializationContext.SerializationPair
                        .fromSerializer(new StringRedisSerializer()))
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
        return RedisCacheManager.builder(factory).cacheDefaults(cacheConfiguration).build();}
}

配置好了config类,就可以使用 @Cacheable(value = “dept” )注解,数据会存入缓存中以json的形式存放进去,我的 @Cacheable(value = “dept” )注解使用在service里面

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值