cacheable 默认实现是什么
时间: 2024-06-04 22:09:45 浏览: 208
cacheable 默认实现是将方法的参数作为缓存的 key,将方法的返回值作为缓存的 value,使用 ConcurrentHashMap 存储缓存数据。当调用 cacheable 方法时,先从缓存中查找是否有对应的数据,如果有则直接返回缓存中的数据,否则执行方法并将返回值存入缓存中。缓存中的数据可以设置过期时间,防止缓存中数据过期而导致的数据不一致问题。
相关问题
@Cacheable默认过期时间
根据引用[1]中的代码,可以看出Spring Cache默认的过期时间是60秒。如果需要对某些缓存进行单独设置过期时间,可以使用`setExpires`方法来实现。而引用中提到,@Cacheable注解并没有提供设置过期时间的字段,需要单独配置文件来管理需要缓存有过期时间的键。因此,可以得出结论:@Cacheable默认过期时间是60秒。
Cacheable 的sync
@Cacheable的sync属性是用来控制缓存是否支持并发访问的。默认情况下,sync属性的值为false,即不支持并发访问。这对于ConcurrentMapCache来说存在缓存并发问题,因为ConcurrentMapCache本身不是线程安全的。但对于GuavaCache来说,sync属性的默认值为true是合理的,因为GuavaCache本身是可以处理并发访问的。
当我们将@Cacheable的sync属性设置为true时,会启用同步机制来保证并发访问的安全性。在这种情况下,使用了GuavaCache的LoadingCache来处理缓存操作,具体涉及到了refreshAfterWrite策略。同时,使用了Cache.get(key, Callable)方法来获取缓存数据,并且在获取数据的过程中可以进行同步操作。
需要注意的是,@Cacheable注解本身并没有提供加锁功能,因此sync属性是否起效取决于具体的缓存实现。在Spring Cache中,具体的缓存实现类会根据sync属性的值来决定是否进行同步操作。
阅读全文