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

标签 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-进入函数时,检查缓存中是否有您想要的记录,如果有则返回。

2- 在函数末尾插入到缓存中,然后返回结果。

注意:您需要在此类中拥有一个缓存实例,这是可行的,但不是更好的选择。

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

您可以根据自己的目的选择原型(prototype)范围。

关于java - Spring中如何在非组件类中实现缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49974705/

相关文章:

java - Connect Four gui 的网格构建

java - 使用任何详细信息进行 Spring 登录

java - 当我将 spring-boot war 部署到 tomcat 并启动 tomcat 时,我看到了这个错误消息

java - Spring Data Rest - 隐藏而不是暴露 ID

java - 如何从 Java Spring MVC 3.0 Webapp 流式传输文本响应

java - 使用 Spring 引导 play 2.4 Java 应用程序的方法是什么?

java - 如何在运行时将java自定义或字符串对象添加到DAO模型对象?

java - Spring AMQP - 死信实现和业务逻辑失败时的最大重试

mysql - Spring Boot从url给出的mysql表中获取数据

java - 如何将另一个包的类导入到我的包中