Micronaut 缓存 Advice
与 Spring 和 Grails 一样,Micronaut 在 io.micronaut.cache 包中提供了缓存注解。
CacheManager 接口允许根据需要插入不同的缓存实现。
SyncCache 接口提供用于缓存的同步 API,而 AsyncCache API 允许非阻塞操作。
缓存注解
支持以下缓存注释:
- @Cacheable - 指示方法可缓存在指定的缓存中
- @CachePut - 指示应缓存方法调用的返回值。与@Cacheable 不同,原始操作永远不会被跳过。
- @CacheInvalidate - 指示方法的调用应导致一个或多个缓存失效。
使用这些注释之一会激活 CacheInterceptor,在 @Cacheable 的情况下,它会缓存方法的返回值。
如果方法返回类型是非阻塞类型(CompletableFuture 或 Publisher 的实例),则会缓存发出的结果。
此外,如果底层 Cache 实现支持非阻塞缓存操作,则读取缓存值时不会阻塞,从而导致非阻塞缓存操作。
配置缓存
默认情况下,Caffeine 用于从应用程序配置创建缓存。例如:
缓存配置示例
Properties | Yaml | Toml | Groovy | Hocon | JSON |
|
|
|
|
|
|
上面的示例配置了一个名为“my-cache”的缓存,最大大小为 20。
命名缓存
在 micronaut.caches 下以 kebab 大小写定义缓存名称(小写和连字符分隔);如果您使用驼峰式大小写,名称将标准化为烤肉串大小写。例如 myCache 变成 my-cache。在 @Cacheable 注释中引用缓存时,必须使用 kebab-case 形式。
要将称重器配置为与 maximumWeight 配置一起使用,请创建一个实现 io.micronaut.caffeine.cache.Weigher 的 bean。要将给定的称重器仅与特定缓存相关联,请使用 @Named(<cache name>) 注释 bean。没有命名限定符的称重器适用于所有没有命名称重器的缓存。如果没有找到 bean,则使用默认实现。
动态缓存创建
可以为无法提前配置缓存的用例注册 DynamicCacheManager bean。当尝试检索未预定义的缓存时,将调用动态缓存管理器来创建并返回缓存。
默认情况下,如果应用程序中没有定义其他动态缓存管理器,Micronaut 会注册一个 DefaultDynamicCacheManager 实例,该实例使用默认值创建 Caffeine 缓存。
其他缓存实现
查看 Micronaut 缓存项目以获取更多信息。
更多建议: