自新Grails版本3.2.3以来的命令
generate-all <Domain Class>
生成名为service grails.gorm.services.Service
的{{1}},这是一个接口
我可以编辑的实际实现是什么?
答案 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 在您可以编辑模板之后,它们将用于生成服务/控制器等。