jetcache @Cached、@CacheUpdate中的key、value是否像postCondition 、condition可以使用SpEL访问到#result对象?

eqqqjvef  于 3个月前  发布在  其他
关注(0)|答案(4)|浏览(54)

如标题,是否可以下面这样使用?

例子:
@cached(key="#result.id", value="#result")

我在文档中没有发现key、value中有提到可以使用#result
但我需求是在dao层,insert、update方法入参对象不完整,返回的对象才是我想要缓存的对象,不知是否支持?

wnvonmuf

wnvonmuf1#

这是个先有鸡还是先有蛋的问题,key要先进行评估,然后才决定要不要执行方法(或者使用cache里面的数据返回),你都没有执行怎么会有result呢?

ulmd4ohb

ulmd4ohb2#

这是个先有鸡还是先有蛋的问题,key要先进行评估,然后才决定要不要执行方法(或者使用cache里面的数据返回),你都没有执行怎么会有result呢?

谢谢大佬答复。

我完整些举例表达,防止歧义:

@cached(key="#result.id", value="#result", postCondition="#result.id != null")
User insert(User example);

@CacheUpdate(key="#result.id", value="#result", condition="#result.id != null")
User update(User example);

两个例子中,实际都想表达方法执行后,缓存或更新方法结果;
由于@cached、@CacheUpdate文档中key、value未说明是否可以引用到#result,所以特此请教这样使用是否可以有效。

k10s72fa

k10s72fa3#

key和value的表达式不能访问result,另外cached注解没有value这个属性。

你有特殊需要可以直接用api,不一定非要和注解死磕

a2mppw5e

a2mppw5e4#

key和value的表达式不能访问result,另外cached注解没有value这个属性。

你有特殊需要可以直接用api,不一定非要和注解死磕

好的,感谢大佬;
讲解很清晰。

相关问题