假设有一个应用程序在控制器层中使用forms
包和<whatever>Form.java
进行验证,因此每个需要验证的请求都有一个相应的<requestName>Form.java
类。
这导致控制器方法签名如下所示:
TemplateController.java
@PostMapping
public Mono<SmsMessageTemplate> create(@Valid @RequestBody Mono<TemplateForm> templateForm)
然后有一个服务层,方法签名如下所示:
TemplateService.java
public Mono<SmsMessageTemplate> create(TemplateForm formData) {...}
也可以像这样实现它:
TemplateService.java
public Mono<SmsMessageTemplate> create(String template name, String templateText) {...}
哪种方式更好,为什么?我认为将Form
类传递给服务层可能是层概念的混合,并且应该在控制器层中保留表单,以便更好地理解传递的参数,而无需来回导航类。我想念一下吗?
答案 0 :(得分:1)
这些决定完全取决于各种因素f.e: - 项目的复杂性和数量(它只是一个小型服务,还是一个完整的CMS / ERPS等?)
您打算在其他模块/项目中重复使用该服务
你打算发布服务接口jar吗? (那么你需要考虑模块,也许* Form对象甚至不在控制器端 - 你不希望将控制器类分发给第三方客户端)
包含20个字段的表单怎么样?你肯定不会传递20个参数
一般来说,如上所述,这是基于意见的,但在我看来,每个项目的总体复杂性和设想的大小将影响您的最终决定。