gpt4 book ai didi

java - 如何使 Spring Framework 的 @Cachable 以文件的 lastModified 属性作为键工作?

转载 作者:行者123 更新时间:2023-12-02 03:53:40 24 4
gpt4 key购买 nike

这是我的代码:

@Cacheable(value = "configurationCache", key = "#myFile.lastModified()")
private Object foo(File myFile) throws IOException {
System.out.println(myFile.lastModified());
try {
Thread.sleep(6000);
} catch (InterruptedException ignored) {

}
final Object foo = new SomeObjectFromFile(myFile);
return foo;
}

我调用此方法两次,传递具有相同 LastModified 值的文件对象,但缓存不起作用,该方法将等待 6 秒。

这是我得到的输出:

1456298573000
1456298573000

我做错了什么?

key = "#myFile.lastModified"

也没有用..

我确信我的 ehcache 配置没问题。

最佳答案

假设您不使用aspectj,朱利安的答案可能是正确的。它不仅仅是调用一个公共(public)方法,而是调用一个对象的公共(public)方法,其中 spring 有机会包装它的代理。因此,请确保您正在注入(inject)想要通过可缓存支持增强的服务。

例如

@Service
public SomeService {
@Autowired
private CacheEnhancedService css;

public void doSomething() {
css.getConfig(new File("./file"));
}
}

@Service
public CacheEnhancedService {
@Cacheable(value = "configurationCache", key = "#myFile.lastModified()")
public Object getConfig(File myFile) {
...
}
}
}

关于java - 如何使 Spring Framework 的 @Cachable 以文件的 lastModified 属性作为键工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35669025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com