小编典典

服务层和控制器:各自负责什么?

spring

在课堂上,我们现在学习如何构建Spring应用程序,即使没有直接涉及spring,我们也学习了如何为DAO和服务层对象创建接口。

如果我错了,请纠正我:DAO层是非常抽象的:它仅包含CRUD操作,并进一步用于读取数据(即:获取所有对象,获取特定对象等)

服务层:包含用于创建事物和删除事物的服务,这是业务逻辑应该存在的地方。

现在,所有这些对于服务层来说都是有意义的。除了“更新”对象。你是否只是放置了一个“更新”功能,将对象保存在数据库中?还是你还需要在其中定义逻辑?这就是我的困惑所在,我的理解是Spring中的对象只是POJO的对象。现在,谁来验证数据?

比方说,我有一个对象“孩子”有:Name,SurName,Gender,Photo,Birthdate 领域。我将如何命名服务?还是让控制器负责验证,这对我来说似乎不合适。另一方面,将每个需要调用的setter委托给服务层似乎也不对。

所以基本上就可以了:帮助我定义如何通过服务层保存对象。


阅读 1101

收藏
2020-04-12

共1个答案

小编典典

通常,Spring服务是事务性的。事物进入一种特定的服务方法,因为它们应该在同一事务中组合在一起。如果要从数据库中检索对象,请旋转一下并保存新版本,则检索和保存应使用相同的服务方法。因此,你的服务方法取决于你需要应用程序为用户执行的操作。

我试图限制控制器从事与验证http参数有关的工作,确定使用哪种参数调用哪种服务方法,在httpsession或请求中放入哪些内容,重定向或转发到哪个视图或类似与Web相关的内容。

就验证而言:验证控制器中的输入参数是一件好事,以确保没有人可以使用假输入破坏你的应用程序。控制器中的验证往往是确保输入在语法上正确(包括检测注入攻击),而服务级别的验证则是确保数据库中事物的状态符合你的期望。

因此,控制器包含Web框架基础结构代码,服务包含应用程序逻辑代码。

2020-04-12