我在我的 grails 应用程序中创建了一项服务。在该服务中,有 25 种方法。一些方法用于获取数据并传递给控制器,一些方法用于应用业务逻辑,另一些用于数据库数据 CRUD 操作。
编写具有不同行为的多个方法来服务是个好主意吗?我是否必须使服务具有事务性?
以及默认方法的用途是什么
def serviceMethod() {
}
?
此方法是在我创建新服务时创建的...
我在我的 grails 应用程序中创建了一项服务。在该服务中,有 25 种方法。一些方法用于获取数据并传递给控制器,一些方法用于应用业务逻辑,另一些用于数据库数据 CRUD 操作。
编写具有不同行为的多个方法来服务是个好主意吗?我是否必须使服务具有事务性?
以及默认方法的用途是什么
def serviceMethod() {
}
?
此方法是在我创建新服务时创建的...
编写具有不同行为的多个方法来服务是个好主意吗?
服务中的多个方法非常好,如果服务中的方法与上下文相关,它就很有意义。
以一个名为springSecurityService
. 您会期望其中包含的方法与 Spring 安全操作相关。你不会期望在sendMail
那里找到一种方法。
我必须使服务事务化吗?
如果您在该服务中执行数据库操作(主要是写入!),则应该使服务具有事务性。当您的服务是事务性的时,您可以在发生故障时回滚数据库操作。
默认方法有什么用
默认方法只是一个占位符。随意编辑或删除它:D
服务在 Grails 中默认是事务性的 - http://grails.org/doc/latest/guide/services.html#declarativeTransactions
由serviceMethod
CreateService 脚本生成。这只是一个示例,因此您可以根据需要将其删除。
您可以将所有业务逻辑放在服务中。这很方便,但请注意,这更像是一种称为贫血域模型的反模式
恕我直言,您应该尝试遵循面向对象的原则,并将您的大部分业务流程放在域类中。当有一个涉及多个域对象的复杂过程时,也许你可以把它放在一个服务中。