我想创建一个自定义的 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)
但是过期参数不起作用。我必须实现此参数方法的地方。
谢谢
扩展 SpringCacheable
需要的不仅仅是在注释中添加额外的属性。您还需要扩展注释处理器的功能,以便在 Spring 中进行缓存。查看此处以获取有关所需内容的更多详细信息。
弹簧缓存是一个抽象,需要一个缓存提供程序,通常到期时间是在缓存级别设置的(例如,Ehcache的每个缓存都有timeToLiveSeconds
参数)