如何在非组件类中实现Spring中的缓存

时间:2018-04-23 06:30:31

标签: java spring spring-boot caching

我理解为了缓存@Cacheable@CachePut这样的注释,它们应该在Spring Component类中使用。但是,我有一个不是Spring组件或服务的类,但我需要在该类中的一个方法上实现缓存。

@CachePut(cacheNames = {"NAME_OF_CACHE"})
public Object addToCache(String cacheKey) {
    // Some computation here
    return response;
}

我有一个障碍,可以将此类转换为组件。此类的对象将在运行时初始化。有没有办法实现这个功能?

1 个答案:

答案 0 :(得分:0)

您可以手动管理缓存:

1-当您输入该功能时,检查缓存是否具有您想要的记录,如果是,则返回。

在函数结尾处插入到缓存之前,返回结果。

注意:你需要在这个类中有一个缓存实例,这是可行但不可取的。

另一方面,如果您在将其转换为组件时遇到问题,因为它需要在运行时进行实例化。 Spring提供此功能,您只需要检查 scope 选项。

您可以选择原型范围。