@Cacheable key的使用

本文详细介绍了Spring框架中缓存方法返回结果时如何自定义Key的策略。通过使用SpringEL表达式,可以灵活地根据方法参数或root对象属性生成Key,实现更精准的缓存控制。

key属性是用来指定Spring缓存方法的返回结果时对应的key的。该属性支持SpringEL表达式。当我们没有指定该属性时,Spring将使用默认策略生成key。我们这里先来看看自定义策略,至于默认策略会在后文单独介绍。

       自定义策略是指我们可以通过Spring的EL表达式来指定我们的key。这里的EL表达式可以使用方法参数及它们对应的属性。使用方法参数时我们可以直接使用“#参数名”或者“#p参数index”。下面是几个使用参数作为key的示例。

@Cacheable(value="users", key="#id")

   public User find(Integer id) {

      returnnull;

   }

   @Cacheable(value="users", key="#p0")

   public User find(Integer id) {

      returnnull;

   }

   @Cacheable(value="users", key="#user.id")

   public User find(User user) {

      returnnull;

   }

   @Cacheable(value="users", key="#p0.id")

   public User find(User user) {

      returnnull;

   }


除了上述使用方法参数作为key之外,Spring还为我们提供了一个root对象可以用来生成key。通过该root对象我们可以获取到以下信息。


当我们要使用root对象的属性作为key时我们也可以将“#root”省略,因为Spring默认使用的就是root对象的属性。如:

   @Cacheable(value={"users", "xxx"}, key="caches[1].name")

   public User find(User user) {

      returnnull;

   }

如果要调用当前类里面的方法

@Override
@Cacheable(value={"TeacherAnalysis_public_chart"}, key="#root.target.getDictTableName() + '_' + #root.target.getFieldName()")
public List<Map<String, Object>> getChartList(Map<String, Object> paramMap) {
}
public String getDictTableName(){
    return "";
}
public String getFieldName(){
    return "";
}
IEC 62680-1-2:2024 Universal serial bus interfaces for data and power –Part 1-2: Common components – USB Power Delivery specification内容概要:IEC 62680-1-2:2024 是国际电工委员会发布的关于通用串行总线接口的数据与电源标准,特别关注USB Power Delivery(USB PD)规范。该标准详细规定了USB PD的协议层、消息传递机制、控制消息、数据消息、扩展消息及其应用范围,包括各类计时器、状态机行为、消息适用性和值参数。此外,它还涵盖了电源供应的具体要求,如源和宿的行为特性、电容、过渡条件等。标准中包含了大量图表,以帮助理解不同操作条件下的状态转换图和消息流。修订历史部分展示了自2021年以来版本的迭代,包括对特定技术细节的澄清和改进。适合人群:适用于从事USB相关硬件设计、开发与测试的技术人员,特别是那些需要深入了解USB PD协议及其实施细节的专业人士。使用场景及目标:① 设计和开发支持USB PD的设备时,确保符合最新的国际标准;② 解析和解决USB PD设备之间的兼容性问题;③ 测试USB PD设备的功能和性能,确保其稳定性和可靠性。其他说明:该标准受版权保护,未经许可不得复制或利用。在实际应用中,应结合具体的产品需求和技术背景进行深入研究。标准中的图表和流程图对于理解复杂的协议交互非常有帮助,建议读者仔细阅读并参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值