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 其他用法

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

被折叠的 条评论
为什么被折叠?



