Ale*_*ley 5 java methods spring caching
我有一个服务,它接收一个DTO并返回一些结果:
@Override
public int foo(Bar bar) {
....
}
Run Code Online (Sandbox Code Playgroud)
栏如下(简化):
public class Bar {
public int id;
public String name;
public String baz;
@Override
public int hashCode() {
//this is already being defined for something else
...
}
@Override
public boolean equals(Object o) {
//this is already being defined for something else
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想在foo方法上使用@Cacheable; 但是,我想在id和name属性上哈希,但不是baz.有没有办法做到这一点?
vsi*_*ngh 22
您也可以使用此方法
@Override
@Cacheable(key="{#bar.name, #bar.id}")
public int foo(Bar bar) {
....
}
Run Code Online (Sandbox Code Playgroud)
建议不要在多个方法参数上使用哈希码作为键 @Cacheable键
是的,您可以使用这些行中的Spring-EL表达式指定:
@Override
@Cacheable(key="#bar.name.concat('-').concat(#bar.id)")
public int foo(Bar bar) {
....
}
Run Code Online (Sandbox Code Playgroud)
或者在bar上定义一个修改过的hashCode并调用:
@Override
@Cacheable(key="#bar.hashCodeWithIdName")
public int foo(Bar bar) {
....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21257 次 |
| 最近记录: |