让我们假设一个简单的 Spring MVC Controller ,它接收域对象的 ID。 Controller 应该调用一个服务,该服务应该对该域对象执行某些操作。
你在哪里通过从数据库加载它来将领域对象的ID“转换”成领域对象?这不应该由 Controller 来完成。因此,服务方法接口(interface)必须使用接受域对象 的ID,而不是域对象本身。但是服务的接口(interface)如果以领域对象作为参数会更好。
您对这个常见用例有何看法?你如何解决这个问题?
最佳答案
Controller 应该将 id 向下传递到服务层,然后取回呈现其余 HTTP 响应所需的任何内容。
所以 -
Map<String,Object> doGet (@RequestParam("id") int id) {
return serviceLayer.getStuffByDomainObjectId(id);
}
任何其他东西只会污染 web 层,它根本不应该关心持久性。服务层的全部目的是获取域对象并告诉它们执行它们的业务逻辑。因此,数据库调用应该驻留在服务层中 -
public Map<String,Object> getStuffByDomainObjectId(int id) {
DomainObject domainObject = dao.getDomainObjectById(id);
domainObject.businessLogicMethod();
return domainObject.map();
}
关于java - Spring MVC 域对象处理最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1079708/