java - 如何在 Spring Boot 中正确创建非持久性存储库?
问题描述
我想将资源数据存储在 Spring Boot RESTful Web 服务中的内存中(例如,在Map中,非持久性)。我是 Spring(Boot)的新手,我不确定执行此操作的首选方法是什么。
创建包含资源的Repository ( @Repository
) 是执行此操作的正确方法,还是首选创建Service、Component或使用其他方法?
假设我想让 Todos 与标签具有多对多关系,如下所示:
@RestController
@RequestMapping("/todos")
public class TodoController {
@Autowired
private TodoRepository todoRepository;
@Autowired
private TagRepository tagRepository;
...
}
可以重构Controller类中的关系吗?这应该发生在中间TodoService类中吗?
解决方案
存储库与 JDBC(或 JPS 等)一起使用,以帮助您与 DB(持久性,如 SQL,或内存中,如 H2)对话。如果您不这样做,那么您不需要存储库接口。
如果您非永久性地存储信息并希望能够注入它,我会将其Map
作为实例变量放入服务类中。然后你可以注入服务并Map
在任何地方访问它。
我更喜欢的模式是将服务注入到控制器中,控制器中除了对服务层的调用和HTTPResponse
. (我会将存储库/ies 注入服务以处理任何数据库交互,但在您的情况下,这些服务方法将与您的地图实例变量交互)/
推荐阅读
- css - AMP 字体不起作用
- android - 按下后退按钮时删除webview上textarea中的字符
- php - Symfony 路由:_controller 特殊参数
- angular - 使用 FormArray 的 Angular Material 可编辑表
- c++ - CMake 生成的程序无法在 Windows 上链接:尝试链接到不存在的文件
- tensorflow - Gcloud FileNotFound - 机器学习引擎
- java - Corda 自定义文件上传端点
- c# - 在Firefox中使用Windows身份验证时访问网络共享文件
- vba - 如何将树视图类导出到 VBA Excel 中的不同工作簿?
- pytest - 如果第一个测试失败,如何使用不同的参数重新运行测试用例