新版Spring Boot(12)- Spring Boot 与Spring Cache(1)

本文详细介绍了如何在SpringBoot应用中集成并使用EhCache和SpringCache进行缓存管理,包括配置、注解使用、自定义Key生成、缓存更新与清除等。通过示例代码展示了缓存的读取、更新和删除操作,帮助读者理解SpringBoot中缓存管理的基本用法。

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

1 缓存

1.1 java缓存框架

  • EhCache

1.2 Spring Cache

定义了规范,主要注解

  • @EnableCaching
  • @Cahcable
  • @CahcePut
  • @CacheEvict
  • @Caching
  • @CahceConfig

1.3 工程搭建

在这里插入图片描述
在这里插入图片描述

1.4 基本用法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 单测

在这里插入图片描述
在这里插入图片描述

1.5 自定义key

  • 一般用方法名+参数可以满足大部分的使用场景
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.stereotype.Component;

import java.lang.reflect.Method;
import java.util.Arrays;

/**
 * @Description TODO
 * @Author tzb
 * @Date 2021/8/24 21:58
 * @Version 1.0
 **/
@Component
public class MyKeyGen implements KeyGenerator {
    @Override
    public Object generate(Object target, Method method, Object... params) {

        String s = target.toString() + ":" + method.getName() + ":" + Arrays.toString(params);

        return s;
    }
}

  • 单测
@SpringBootTest
class CacheRedisSpringbootApplicationTests {

    @Autowired
    UserService userService;

    @Test
    void contextLoads() {

        User u = userService.getUserById2(1L,"John");
        System.out.println(u);

    }

}

在这里插入图片描述

1.6 更新缓存

@Service
public class UserService {

    @Cacheable(cacheNames = "c1")
    public User getUserById(Long id) {
        System.out.println("getUserById: " + id);
        User user = new User();
        user.setId(id);
        user.setUsername("Mike");
        return user;
    }

//如果缓存不存在,则进行缓存,否则更新
    @CachePut(cacheNames = "c1", key = "#user.id")
    public User updateUserById(User user) {
        return user;
    }

  • 单测
@SpringBootTest
class CacheRedisSpringbootApplicationTests {

    @Autowired
    UserService userService;

    @Test
    void contextLoads() {
        User u = userService.getUserById(100L);
        System.out.println(u);

        User u2 = new User();
        u2.setId(100L);
        u2.setUsername("Lin");
        userService.updateUserById(u2);

        User u3 = userService.getUserById(100L);
        System.out.println(u3);

    }

}

1.7 清除缓存

@Service
public class UserService {

    @Cacheable(cacheNames = "c1")
    public User getUserById(Long id) {
        System.out.println("getUserById: " + id);
        User user = new User();
        user.setId(id);
        user.setUsername("Mike");
        return user;
    }

    @CachePut(cacheNames = "c1", key = "#user.id")
    public User updateUserById(User user) {
        return user;
    }

    @CacheEvict(cacheNames = "c1")
    public void deleteUserById(Long id){
        System.out.println("deleteUserById");
    }

1.8 其他用法

在这里插入图片描述

2 Ehcache缓存

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值