繁体   English   中英

Spring MVC 创建 object 请求

[英]Spring MVC create object request

我正在使用 spring MVC 编写服务以将书籍添加到图书馆。 所以我有一个方法@PostMapping(...) public Book addBook(@RequestBody Book book) {...}但问题是Book object 包含很多字段,但我只希望其中一些允许传递给addBook请求。 假设在一本书中有一个字段lastRequestedTime ,我永远不想让用户填写这个参数。

我的想法是使用所有必填字段创建新的 class AddBookRequest ,因此我的方法将如下所示: @PostMapping(...) public Book addBook(@RequestBody AddBookRequest book) {...}但在这种情况下,我需要几乎为每个请求制作大量**Requst Request 类。

我对多少? 有没有更好的方法?

你的想法是对的,你要实现的是DTO 模式

这个想法是将您的请求主体与您的域 model 分离(假设 Book 是一个业务实体)。 它们分别指不同的应用层:controller 和域 model。

这样的区别有很多好处:

  • 对请求逻辑的更改不会影响业务实体(反之亦然)
  • 请求对象不包含额外的字段(这是你的情况)
  • 序列化逻辑不与域 model 定义混合(例如,您可能希望在请求对象的属性上放置一些 Jackson 注释)

但是,请注意有一个明显的缺点:代码重复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM