如何将服务注入控制器和域?
我是grails的新手,无法在线查找此信息。
答案 0 :(得分:8)
在控制器
中def springSecurityService
并在域
中transient springSecurityService
static transients = ['springSecurityService']
试试这个。
答案 1 :(得分:3)
Grails中的依赖注入类似于默认情况下自动装配"约定配置"。 配置规定如果您已在内部定义了服务类。
右键点击>新的groovy类>给出一个像SourceService.groovy这样的名字。
在此文件夹和子文件夹下
yourapplication / services / SourceService.groovy
看起来像:
class SourceService {
def serviceMethod(){
//do some work here
}
}
文件夹,配置将处理这个用作依赖注入bean的普通bean定义为spring和struts应用程序。
当你来使用它时:
您始终必须将SourceService的变量声明为camelCase
,与/ services文件夹下的SourceService.groovy文件相同。确定。
如果您想在您的域或控制器类中调用服务,请说明。
def sourceService //most usual method // see name as same as service class
SourceService sourceService // or this way as suggested on this post
def login(){
//the use your service with no other requirements
sourceService.serviceMethod() // bam!
}
答案 2 :(得分:2)
依赖注入可以使用def和serviceName完成,但我建议使用静态类型。
如果您有UserService,那么您应该使用控制器,域名和其他服务
UserService userService
这将为您提供Groovy静态类型检查和速度的优势,这将使您免于浪费时间进行调试和测试。
基本上就像你知道类型使用那些静态类型,如果你不知道去def。
答案 3 :(得分:1)
使用Spring依赖注入通过grails自动为您完成依赖注入 - 所以您需要做的就是使用以下命令在控制器/域文件中定义bean(服务名称):
def serviceName
然后,您可以从此对象调用服务方法。点击这里阅读官方grails文档中的更多内容: here