Java 向服务发送表单
我有一个名为Java 向服务发送表单,java,spring,Java,Spring,我有一个名为AddNewItemForm的Spring表单,它包含验证注释 此表单是我的SpringRestControlleraddNewItem()方法的参数,它将被验证,结果存储在BindingResults中 我需要从我的控制器呼叫服务。这是我的问题。在我的服务中有一个带有此签名的方法可以吗 public Item add(AddNewItemForm form) 还是像这样更好 public Item add(Item item) 我认为表单只用于控制器验证,而服务不需要知道它。它
AddNewItemForm
的Spring表单,它包含验证注释
此表单是我的SpringRestController
addNewItem()
方法的参数,它将被验证,结果存储在BindingResults
中
我需要从我的控制器呼叫服务。这是我的问题。在我的服务中有一个带有此签名的方法可以吗
public Item add(AddNewItemForm form)
还是像这样更好
public Item add(Item item)
我认为表单只用于控制器验证,而服务不需要知道它。它只需要知道如何使用实体
我想我应该在控制器中构造我的项
,使用我拥有的所有数据,然后将该项传递给服务添加(项)
方法
我说得对吗?在我看来,服务不应该知道您的命令对象(AddNewItemForm),因为它们是完全独立的
我同意你的最后一个建议,你必须在调用你的服务之前构造你的模型对象。基本上在您的控制器中或在实用程序类的帮助下。从依赖性的角度考虑它:您的web层始终需要了解您的服务模块,通过将AddNewItemForm(我假设它存在于您的web模块/包中)传递回您的服务,您现在有了一个循环依赖性 依赖项只能向下流动:
Repository>Service>Web在某些情况下,可以在服务层上进行验证。例如,如果名称为的项目已经存在,或者项目所有者用户被阻止,则无法创建新项目。我严格指的是将controller中用于验证的表单传递给服务。我在控制器和服务两个位置进行验证。在控制器中,我验证表单输入,在服务中,我验证几乎相同的输入,与其他类型的逻辑(如您提到的逻辑)进行对比。我同意您最后的建议。验证控制器中的表单输入->将其解析为服务对象并将其发送到服务,服务将验证该项。