首页 > 解决方案 > 弹簧靴 | 创建自定义缓存注释和实现

问题描述

我想创建一个自定义 spring @Cachable 注释,我可以在其中以秒为单位定义过期时间。问题是,我不知道如何在自定义注释中实现新方法“expiresInSec()”。

这是我的自定义 @Cachable 注释:

@Retention(RetentionPolicy.RUNTIME)
@Target(
{ElementType.TYPE, ElementType.METHOD})
public @interface Cachable
{
    Cacheable cachable();

    // cache entry expires in 1 hour by default
    int expiresInSec() default 3600;
}

这是自定义注解的调用:

@Cachable(cachable = @Cacheable("WorkListRepository::getWorkList"), expiresInSec = 60)

但是 expireInSec 参数不起作用。我必须在哪里实现这个参数方法。

谢谢

标签: javaspringspring-bootspring-annotationsspring-cache

解决方案


扩展 SpringCacheable不仅仅需要在注解中添加额外的属性。您还需要扩展注释处理器的功能以在 Spring 中进行缓存。在这里查看更多关于它需要什么的细节。

Spring 缓存是一种抽象,需要缓存提供程序,并且通常在缓存级别设置到期时间(例如,Ehcache具有timeToLiveSeconds 每个缓存的参数)


推荐阅读