【发布时间】:2016-06-07 07:13:38
【问题描述】:
我希望能够在 /src/groovy 中的 Groovy 类中包含服务
我找到了解决方案:
myBean(MyBean) { bean ->
bean.autowire = 'byName'
}
但我不想在resources.groovy 中为所有类创建此条目,那么是否有解决方案可以自动装配特定文件夹中的所有类?
我正在使用 grails 2.4.3
【问题讨论】:
我希望能够在 /src/groovy 中的 Groovy 类中包含服务
我找到了解决方案:
myBean(MyBean) { bean ->
bean.autowire = 'byName'
}
但我不想在resources.groovy 中为所有类创建此条目,那么是否有解决方案可以自动装配特定文件夹中的所有类?
我正在使用 grails 2.4.3
【问题讨论】:
这似乎和这个问题类似:Grails 2.x service injection in Groovy/src
我们使用和建议的是通过应用程序上下文获取服务:
import grails.util.Holders
...
def myService = Holders.grailsApplication.mainContext.getBean 'myService'
它不是完全自动连接的,但似乎是将服务放入 src/groovy 的最佳方式。
编辑:也适用于 Grails 3
【讨论】:
您可以通过将以下内容添加到BuildConfig.groovy 来使src/groovy 中的类com.example.MyClass 成为Spring bean
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 更方便。
【讨论】: