0

我在我的 grails 应用程序中创建了一项服务。在该服务中,有 25 种方法。一些方法用于获取数据并传递给控制器​​,一些方法用于应用业务逻辑,另一些用于数据库数据 CRUD 操作。

编写具有不同行为的多个方法来服务是个好主意吗?我是否必须使服务具有事务性?

以及默认方法的用途是什么

def serviceMethod() {

    }

?

此方法是在我创建新服务时创​​建的...

4

2 回答 2

3

编写具有不同行为的多个方法来服务是个好主意吗?

服务中的多个方法非常好,如果服务中的方法与上下文相关,它就很有意义。

以一个名为springSecurityService. 您会期望其中包含的方法与 Spring 安全操作相关。你不会期望在sendMail那里找到一种方法。

我必须使服务事务化吗?

如果您在该服务中执行数据库操作(主要是写入!),则应该使服务具有事务性。当您的服务是事务性的时,您可以在发生故障时回滚数据库操作。

默认方法有什么用

默认方法只是一个占位符。随意编辑或删除它:D

于 2012-06-13T12:07:09.870 回答
2

服务在 Grails 中默认是事务性的 - http://grails.org/doc/latest/guide/services.html#declarativeTransactions

serviceMethodCreateService 脚本生成。这只是一个示例,因此您可以根据需要将其删除。

您可以将所有业务逻辑放在服务中。这很方便,但请注意,这更像是一种称为贫血域模型的反模式

恕我直言,您应该尝试遵循面向对象的原则,并将您的大部分业务流程放在域类中。当有一个涉及多个域对象的复杂过程时,也许你可以把它放在一个服务中。

于 2012-06-13T12:08:16.263 回答