Grails generate-all生成一个Service类(3.2.3)

时间:2018-01-02 08:09:35

标签: grails gorm

自新Grails版本3.2.3以来的命令

generate-all <Domain Class>

生成名为service grails.gorm.services.Service的{​​{1}},这是一个接口

我可以编辑的实际实现是什么?

2 个答案:

答案 0 :(得分:3)

来自

https://github.com/grails/grails-core/issues/11062

该服务是DataService,在这里进行了说明:

http://gorm.grails.org/latest/hibernate/manual/index.html#dataServices

@Service批注是AST转换,它将自动为您实现服务。然后,您可以通过Spring自动装配获得服务。

@Service转换将查看接口的方法签名,并尽最大努力寻找实现每种方法的方法。

此外,域类的所有公共方法都将自动包装在适当的事务处理中。

这意味着您可以定义非事务性的受保护抽象方法以组成逻辑。例如:

@Service(Book)
abstract class BookService  {

   protected abstract Book getBook(Serializable id) 

   protected abstract Author getAuthor(Serializable id) 

   Book updateBook(Serializable id, Serializable authorId) { 
      Book book = getBook(id)
      if(book != null) {
          Author author = getAuthor(authorId)
          if(author == null) {
              throw new IllegalArgumentException("Author does not exist")
          }
          book.author = author
          book.save()
      }
      return book
   }
}

答案 1 :(得分:0)

要编辑生成模板,您应该使用以下脚本: https://docs.grails.org/latest/ref/Command%20Line/install-templates.html 在您可以编辑模板之后,它们将用于生成服务/控制器等。