我希望能够在/ src / groovy中的Groovy类中包含服务
我找到了一个解决方案:
myBean(MyBean) { bean ->
bean.autowire = 'byName'
}
但我不想在resources.groovy
中为所有类创建此条目,那么是否有自动装配特定文件夹中所有类的解决方案?
我正在使用grails 2.4.3
答案 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