java - Spring Cacheable 实现类

标签 java spring-boot

我正在尝试以某种方式“调试”我使用 spring boot 缓存注释的应用程序,为此我想知道如何找到实际实现接口(interface) Cacheable、CacheConfig 等的类。

我的想法是确认缓存正在被填充、清空等。

非常感谢您的帮助,

最佳答案

@Cacheable 用于划分可缓存的方法 - 也就是说,将结果存储到缓存中的方法,以便在后续调用(使用相同的参数)时,缓存中的值无需实际执行该方法即可返回。在最简单的形式中,注解声明需要与注解方法关联的缓存名称:

@Cacheable("books")
public Book findBook(ISBN isbn) {...}

在上面的代码片段中,方法 findBook 与名为 books 的缓存相关联。每次调用该方法时,都会检查缓存以查看调用是否已经执行并且不必重复。虽然在大多数情况下,只声明一个缓存,但注解允许指定多个名称,以便使用多个缓存。在这种情况下,将在执行该方法之前检查每个缓存 - 如果至少命中一个缓存,则将返回关联的值。

有关更多信息,请阅读以下内容;

https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#cache

Spring 使用ConcurrentHashMap 作为默认的缓存实现。

public class ConcurrentMapCache extends AbstractValueAdaptingCache

另一方面,如果您需要不同的缓存,那么 Spring 还提供了一个内置的 ehCache 包装器。好消息是在 Spring 的缓存实现之间进行交换很容易。理论上,这完全是配置问题。

关于java - Spring Cacheable 实现类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49053889/

相关文章:

spring-boot - 如何阻止 Cassandra 尝试自动连接

spring - 带有 Spring Boot 2.1 WebMvcTest 的 Kotlin - 缺少 bean

spring-boot - Spring Security中AuthenticationManager和AuthenticationProvider Authenticate方法的区别

java - 我是否应该在 Java 中使用通用 ArrayList,即使它没有提供任何性能优势?

java - 使用 Java 执行 Jmeter 测试计划

spring-boot - 如何使用下划线变量解决 Spring Boot findBy 方法

java - 如何在出现异常时自动重启spring boot应用

java - 用java解决3n+1

java - 如何检测我的 JSON 字符串是否在 Java 中转义了 HTML 标签

java - JPA:如何创建与实体类型相同的字段?