SpringBoot 使用 Caffeine 本地缓存,深信服java社招面试

本文介绍了如何在SpringBoot应用中使用Caffeine作为本地缓存,包括引入依赖、配置缓存管理器、定义实体和服务、测试Controller,并提供了面试相关知识点,如缓存的更新和删除操作。
摘要由CSDN通过智能技术生成

57        if (!StringUtils.isEmpty(oldUserInfo.getAge())) {

58            oldUserInfo.setAge(userInfo.getAge());

59        }

60        if (!StringUtils.isEmpty(oldUserInfo.getName())) {

61            oldUserInfo.setName(userInfo.getName());

62        }

63        if (!StringUtils.isEmpty(oldUserInfo.getSex())) {

64            oldUserInfo.setSex(userInfo.getSex());

65        }

66        // 将新的对象存储,更新旧对象信息

67        userInfoMap.put(oldUserInfo.getId(), oldUserInfo);

68        // 替换缓存中的值

69        caffeineCache.put(String.valueOf(oldUserInfo.getId()),oldUserInfo);

70        return oldUserInfo;

71    }

72

73    @Override

74    public void deleteById(Integer id) {

75        log.info(“delete”);

76        userInfoMap.remove(id);

77        // 从缓存中删除

78        caffeineCache.asMap().remove(String.valueOf(id));

79    }

80

81}

5、测试的 Controller 类

1import mydlq.club.example.entity.UserInfo;

2import mydlq.club.example.service.UserInfoService;

3import org.springframework.beans.factory.annotation.Autowired;

4import org.springframework.web.bind.annotation.*;

5

6@RestController

7@RequestMapping

8public class UserInfoController {

9

10    @Autowired

11    private UserInfoService userInfoService;

12

13    @GetMapping(“/userInfo/{id}”)

14    public Object getUserInfo(@PathVariable Integer id) {

15        UserInfo userInfo = userInfoService.getByName(id);

16        if (userInfo == null) {

17            return “没有该用户”;

18        }

19        return userInfo;

20    }

21

22    @PostMapping(“/userInfo”)

23    public Object createUserInfo(@RequestBody UserInfo userInfo) {

24        userInfoService.addUserInfo(userInfo);

25        return “SUCCESS”;

26    }

27

28    @PutMapping(“/userInfo”)

29    public Object updateUserInfo(@RequestBody UserInfo userInfo) {

30        UserInfo newUserInfo = userInfoService.updateUserInfo(userInfo);

31        if (newUserInfo == null){

32            return “不存在该用户”;

33        }

34        return newUserInfo;

35    }

36

37    @DeleteMapping(“/userInfo/{id}”)

38    public Object deleteUserInfo(@PathVariable Integer id) {

39        userInfoService.deleteById(id);

40        return “SUCCESS”;

41    }

42

43}

五、SpringBoot 集成 Caffeine 方式二


Spring Boot整合Caffeine实现本地缓存,是一个将高性能、基于内存的Caffeine库集成到Spring框架中的过程。Caffeine是一个轻量级且功能强大的Java高速缓存库,它提供了一种简单的方式来添加缓存功能到Spring应用。 以下是步骤: 1. 添加依赖:首先在你的`pom.xml`文件中添加Caffeine的依赖: ```xml <dependency> <groupId>com.github.ben-manes.caffeine</groupId> <artifactId>caffeine</artifactId> <version>2.9.4</version> </dependency> ``` 2. 配置Caffeine Cache:在Spring Boot中,你可以通过配置类(如`application.properties`或`application.yml`)设置Caffeine缓存的属性,比如过期时间、最大容量等: ```properties spring.cache.type=caffeine spring.cache.caffeine.expireAfterWrite=5m // 缓存数据默认超时时间为5分钟 spring.cache.caffeine.maxSize=1000 // 设置最大缓存条目数 ``` 3. 创建缓存注解:在需要缓存的方法上使用`@Cacheable`注解,表示当这个方法的结果不在缓存中时,才会去计算并存储结果: ```java @GetMapping("/cacheExample") @Cacheable(value = "exampleCache", key = "#id") // 缓存名称和生成键的方式 public User getUser(@PathVariable Long id) { return userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("User not found")); } ``` 4. 自定义缓存管理器:如果你想要更精细地控制缓存策略,可以创建自定义的`CaffeineCacheManager`或实现`CacheManager`接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值