java - 我可以在 Spring 中将方法注释为可缓存吗?

标签 java spring caching aop

我想使用一个注释将方法调用的结果标记为可缓存。当提供时,它将使用缓存提供程序来缓存给定输入的输出。例如:

@Cacheable
public Bar doExpensiveCalculation(Foo foo) {
    Bar bar = jiggeryPokeryWith(foo);
    return bar;
}

...

Foo foo1 = new Foo(...);
Foo foo2 = new Foo(...);

Bar bar1 = doExpensiveCalculation(foo1);
Bar bar2 = doExpensiveCalculation(foo2);
Bar bar3 = doExpensiveCalculation(foo1);
// no calculation done on previous line, cached result == bar1

在此示例的末尾,缓存将包含

{doExpensiveCalculation(foo1) -> bar1, 
 doExpensiveCalculation(foo2) -> bar2}

我确信使用 AOP 可以做到这一点。由于 Spring 同时执行 AOP 和缓存,因此它似乎非常适合此用例。

有这样的功能吗?

最佳答案

This module有你想要的。 (但实际上实现起来非常简单)

关于java - 我可以在 Spring 中将方法注释为可缓存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3708204/

相关文章:

xml - 单个文件的 Maven 资源过滤

java - Feign检查体不为空

java - Spring Boot OAuth 资源服务器代理配置

arrays - 是否有可能有一个懒惰地评估其元素的数组?

java - 实时 Java 规范

java - 星级显示不正确

java - 如何在抽屉导航菜单中使用彩色图标?

java - 按钮未出现在 JFrame 中

java - 将 Java 字符串转换为 PostgreSQL 字符变化(《mpaa 评级》)?

java - 一致性缓存 | ConcurrentHashMap 入,HashMap 出