Services — Business logic
Services hold transactional logic. Example:
package bookstore
import grails.gorm.transactions.Transactional
@Transactional
class BookService {
def listPopular() {
Book.where { pages > 300 }.list(max:10, sort:'published', order:'desc')
}
def addBook(Map data) {
def b = new Book(data)
b.save(failOnError:true)
}
}
Services are injected into controllers automatically by name.