/ src / groovy中的动态自动装配

时间:2016-06-07 07:13:39

标签: spring grails autowired

我希望能够在/ src / groovy中的Groovy类中包含服务

我找到了一个解决方案:

myBean(MyBean) { bean ->        
    bean.autowire = 'byName'
}

但我不想在resources.groovy中为所有类创建此条目,那么是否有自动装配特定文件夹中所有类的解决方案?

我正在使用grails 2.4.3

2 个答案:

答案 0 :(得分:1)

您可以通过将以下内容添加到com.example.MyClass

,在src/groovy Spring bean中创建一个类BuildConfig.groovy
grails.spring.bean.packages = ['com.example']

并使用@Component注释该类,例如

@Component
class MyClass {

    @Value('${conf.apiVersion}')
    String apiVersion

    @Autowired
    SomeService someService
}

如上所示,您可以使用通常的Spring注释(例如@Value@Autowired)依赖注入类。我发现注册Spring bean比修改resources.groovy更方便。

答案 1 :(得分:0)

这似乎与这个问题类似:Grails 2.x service injection in Groovy/src

我们使用并建议通过应用程序上下文获取服务:

import grails.util.Holders
...
def myService = Holders.grailsApplication.mainContext.getBean 'myService'

它并非完全自动连线,但似乎是将服务引入src / groovy的最佳方式。

编辑:也适用于Grails 3