加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何将Grails服务注入src/groovy类

发布时间:2020-12-14 16:36:35 所属栏目:大数据 来源:网络整理
导读:Grails 2.4.x在这里.如果我使用grails create-service com.example.Widget创建了Grails服务,那么如何在src / groovy下的类中注入该服务的引用(“bean”)? 这实际上没有在官方Grails文档的任何地方解释,并且广泛的搜索转回了nadda. 解决方法 1)您可以使用res
Grails 2.4.x在这里.如果我使用grails create-service com.example.Widget创建了Grails服务,那么如何在src / groovy下的类中注入该服务的引用(“bean”)?

这实际上没有在官方Grails文档的任何地方解释,并且广泛的搜索转回了nadda.

解决方法

1)您可以使用resources.groovy将Spring Beans注入非artefact groovy文件中:

MyClass.groovy

class MyClass {
    def widgetService
    ...
}

resources.groovy

beans = {
    myclass(com.example.MyClass) {
        widgetService = ref('widgetService')
    }
}

2)还有一个额外的@Autowired注释可以做同样的事情:

MyClass.groovy

import org.springframework.beans.factory.annotation.Autowired

class MyClass {
    @Autowired
    def widget
    ...
}

resources.groovy

beans = {
    myclass(com.example.MyClass) {}
}

注意 – 这次myclass bean不需要对小部件的引用.

3)有一种方法可以注入WidgetService – 使用Holders类来获取grailsApplication,它将引用现有的bean.

import grails.util.Holders

class MyClass {
    def widgetService = Holders.grailsApplication.mainContext.getBean('widgetService')

    ...
}

** **更新

4)还有另一个选项是1)和2)的混合 –
在resources.groovy中通过autowire = true注入bean:

MyClass.groovy

class MyClass {
    def widgetService
    ...
}

resources.groovy

beans = {
    myclass(com.example.MyClass) { bean ->
        bean.autowire = true
    }
}

这是我一直在本地使用的方法,因为我觉得它是最干净的,但它确实更多地利用了Grail的“魔力”(无论好坏).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读