Spring启动|创建自定义缓存注释和实现

Spring Boot | Create custom caching annotation and implementation

我想创建一个自定义 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 参数不起作用。我必须在哪里实现这个参数方法。

谢谢

扩展 Spring Cacheable would require more than just adding extra attributes in the annotation. You need to extends the capabilities of annotation processor for caching in Spring as well. Check here 以获取更多详细信息。

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