Grails服务的一个重要方面是,有能力利用 Spring 框架 的依赖注入能力。
Grails支持 “依赖注入通过规约”. 换句话说,你可以使用一个属性名表示的一个服务的类名,自动把他们注入到 controllers, tag libraries,等等。
作为示例,给定的服务名为BookService, 如果你像下面这样在controller中放置一个名为bookService 的属性:class BookController {
def bookService
…
}
在这种情况下,Spring 容器将自动注入一个基于它自己配置作用域的服务实体。
所有的依赖注入是通过名字的; Grails 不支持类型注入。
你也可以像下面这样指定类型:class AuthorService {
BookService bookService
}
不过, 存在副作用,即在开发模式下BookService的改变会在加载时抛出一个错误。