多种服务于grails的方法

时间:2012-06-13 10:21:01

标签: grails gorm transactionscope grails-2.0 spring-transactions

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

为服务编写具有不同行为的多个方法是否是个好主意? 我是否必须进行服务交易?

以及默认方法的用途

def serviceMethod() {

    }

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

2 个答案:

答案 0 :(得分:3)

  

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

服务中的多个方法非常精细,如果服务中的方法与上下文相关,那么它就变得很有意义。

以一个名为springSecurityService的服务为例。您可能希望其中包含的方法与弹簧安全操作相关。你不希望在那里找到sendMail方法。

  

我是否必须进行服务交易?

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

  

默认方法的用途是什么

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

答案 1 :(得分:2)

默认情况下,Grails中的服务是交易性的 - http://grails.org/doc/latest/guide/services.html#declarativeTransactions

serviceMethod由CreateService脚本生成。这只是一个例子,如果您愿意,可以删除它。

您可以将所有业务逻辑放在服务中。它很方便,但请注意,这更像是一种称为Anaemic Domain Model

的反模式 imho,你应该尝试遵循面向对象的原则,并将大多数业务流程放在域类中。当存在涉及多个域对象的复杂过程时,您可以将其置于服务中。