java - 如何使用两个属性作为key的spring缓存

标签 java spring spring-cache

引用Spring Cache可用于缓存服务调用。

特别是以下 xml 片段:

<!-- the service we want to make cacheable -->
<bean id="bookService" class="x.y.service.DefaultBookService"/>

<!-- cache definitions -->
<cache:advice id="cacheAdvice" cache-manager="cacheManager">
    <cache:caching cache="books">
        <cache:cacheable method="findBook" key="#isbn"/>
        <cache:cache-evict method="loadBooks" all-entries="true"/>
    </cache:caching>
</cache:advice>

<!-- apply the cacheable behavior to all BookService interfaces -->
<aop:config>
    <aop:advisor advice-ref="cacheAdvice" pointcut="execution(* x.y.BookService.*(..))"/>
</aop:config>

如果键是单个属性,则上述机制有效。我需要根据 isbn 和作者进行缓存。

有人可以建议如何使用两个属性启用缓存吗?

谢谢

最佳答案

您可以轻松使用 key="#author.toString() + #isbn.toString()") 或实现您自己的 keyGenerator 并配置它,或者您只需省略 key 属性,以便所有考虑参数。

关于java - 如何使用两个属性作为key的spring缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38644514/

相关文章:

java - 如何通过注释正确配置 2 级 hibernate 实体缓存

java - 具有多种配置的 Spring MVC

java - INSERT sql 语句结合 SELECT 和 WHERE

java - 复杂对象丢失数据

java - 将对象传递给数组列表的区别(初始化一次和多次)

java - 以 Spring MVC 形式绑定(bind)的对象

java - 如何使用数据库单元初始化数据库(语句中未找到表)?

java - 如何将 for 循环数组值设置为 bean

java - Spring Cache 异常 : io. lettuce.core.RedisCommandExecutionException: ERR 'set' 命令的参数数量错误

java - Spring Boot 中的 ACL 安全性