我有一个名为AddNewItemForm
的Spring表单,其中包含验证注释。
此表单是我的Spring RestController
addNewItem()
方法的参数,它将被验证,结果存储在BindingResults
中。
从我的控制器我需要调用该服务。这是我的问题。使用此签名
在我的服务中有一个方法是否可以public Item add(AddNewItemForm form)
或者像
一样更好public Item add(Item item)
我认为只有控制器验证需要表单,但服务不需要知道它。它只需要知道如何操作实体。
我想我应该在控制器中构建我的Item
,包含我拥有的所有数据,然后将此项传递给服务add(item)
方法。
我是对的吗?
答案 0 :(得分:1)
从我的角度来看,服务不应该知道你的命令对象(AddNewItemForm),因为它们是完全独立的。
我同意你的上一个建议,你必须在调用你的服务之前构建你的模型对象。基本上在您的控制器中或在实用程序类的帮助下。
答案 1 :(得分:1)
从依赖性的角度考虑:您的Web层始终需要了解您的服务模块,并将AddNewItemForm(我假设存在于您的Web模块/包中)传递回您的服务,您现在具有循环依赖性。
依赖关系应该只向下流动:
存储库>服务>网络