@Service
public class cacheableServiceImpl implements cacheableService {
/**
* 方法无参时,默认的key为 SimpleKey []
*
* 注:前提条件是 不指定key属性,也无keyGenerator
*/
@Cacheable(cacheNames = "TestKeySpace")
@Override
public void methodOne() {
System.out.println("cha入");
}
/**
* 方法只有一个参数时,默认的key为 传入的参数的toString结果
* 如:调用此方法时,传入的传入的参数为 字符串paramA, 那么key就为paramA
*
* 注:前提条件是 不指定key属性,也无keyGenerator
*/
@Cacheable(cacheNames = "TestKeySpace")
@Override
public void methodTwo(String chen) {
System.out.println("cha入");
}
/**
* 方法只有一个参数时,默认的key为 传入的参数的toString结果
* 如:调用此方法时,传入的传如参数为 User对象, 那么就为以 User对象的toString结果作为key
*
* 注:前提条件是 不指定key属性,也无keyGenerator
*/
@Cacheable(cacheNames = "TestKeySpace")
@Override
public User methodThree(User user) {
System.out.println("cha入");
return user;
}
@Cacheable(cacheNames = "TestKeySpace")
@Override
public void methodfour(Map<Object, Object> objectObjectMap) {
System.out.println("cha入");
}
/**
* 说明一: 若主动设置了key属性,那么以主动设置的key属性值为准(无论是否注入有KeyGenerator)
*
* 说明二: 如果key为常量的话,需要再使用单引号''引起来
*
*/
@Cacheable(cacheNames = "TestKeySpace", key = "'i_am_key'")
@Override
public void methodfive(String dfdfdfdf) {
System.out.println("cha入");
}
/**
* 说明一: 若主动设置了key属性,那么以主动设置的key属性值为准(无论是否注入有KeyGenerator)
*
* 说明二: 我们也可以使用Spring Expression Language (SpEL)动态设置key的属性值,
* 通过 【#形参名】 或 【#p参数索引】来动态获取传入的参数
*
* 如: 这里的 key = "#str" 等价于 key = "#p0" 等价于 key = "#a0"
* 辅助理解:p即params , a 即 args
*/
@Cacheable(cacheNames = "TestKeySpace", key = "#str")
@Override
public void methodSeven(String str) {
System.out.println("cha入");
}
@Cacheable(cacheNames = "TestKeySpace", key = "#str.hashCode() + '*****' + #p1.name")
@Override
public void methodEight(String str, User user) {
}
}