首页 > 解决方案 > 如何在 Spring Boot 中正确创建非持久性存储库?

问题描述

我想将资源数据存储在 Spring Boot RESTful Web 服务中的内存中(例如,在Map中,非持久性)。我是 Spring(Boot)的新手,我不确定执行此操作的首选方法是什么。

创建包含资源的Repository ( @Repository) 是执行此操作的正确方法,还是首选创建ServiceComponent或使用其他方法?

假设我想让 Todos 与标签具有多对多关系,如下所示:

@RestController
@RequestMapping("/todos")
public class TodoController {
  @Autowired
  private TodoRepository todoRepository;
  @Autowired
  private TagRepository tagRepository;

  ...
}

可以重构Controller类中的关系吗?这应该发生在中间TodoService类中吗?

标签: javaspringspring-boot

解决方案


存储库与 JDBC(或 JPS 等)一起使用,以帮助您与 DB(持久性,如 SQL,或内存中,如 H2)对话。如果您不这样做,那么您不需要存储库接口。

如果您非永久性地存储信息并希望能够注入它,我会将其Map作为实例变量放入服务类中。然后你可以注入服务并Map在任何地方访问它。

我更喜欢的模式是将服务注入到控制器中,控制器中除了对服务层的调用和HTTPResponse. (我会将存储库/ies 注入服务以处理任何数据库交互,但在您的情况下,这些服务方法将与您的地图实例变量交互)/


推荐阅读