java - Cacheable 注解中的同步参数如何工作?
问题描述
@Cacheable
Spring 中的注解在第一次调用时运行方法,然后缓存结果。对于将来的引用,它实际上并不运行方法,只是返回缓存的结果。
同步参数说:
如果多个线程试图为同一个键加载一个值,则同步底层方法的调用。
所以我的问题是什么时候应用这种同步?是否仅在第一次调用期间,因为在那之后该方法实际上并没有被调用?为什么它@Cacheable
是同步的而@CachePut
不是同步的?
@Cacheable
和之间的区别在于@CachePut
,@Cacheable
它将跳过运行该方法,而@CachePut
实际运行该方法,然后将其结果放入缓存中。
将同步与实际运行该方法并更新缓存的注释一起使用更有意义,即@CachePut
. 既然@Cacheable
无法更新缓存中的现有条目,为什么还需要同步呢?我在这里想念什么?幕后的过程是怎样的?
解决方案
推荐阅读
- python - 从 API 链接 Python 提取 XML 数据
- firebase - Firestore 规则不适用于集合
- c++ - Forward custom allocator in std::vector to a class element
- java - 将输入与列表进行比较
, 告诉用户输入是否正确、几乎正确或错误 - java - oracle.jdbc.driver.T4CConnection.getSchema() 异常
- angular - 为什么 tree-shake 会从服务中删除未使用的公共方法
- android - 将回调函数传递给Android中的自定义视图
- batch-file - 我有多个包含阿拉伯语值的 .sql 文件,当我在 .bat 文件中使用 sqlcmd 运行它们时,数据库中无法识别阿拉伯语
- tensorflow - ValueError: Expect x to be an non-empty array or dataset (Tensor Flow lite model maker on Collab)
- javascript - json元素可以有不同的属性吗?