/src/groovy 中的动态自动装配
Dynamic autowire in /src/groovy
我希望能够在我的 Groovy Classes 和 /src/groovy
中包含服务
我找到了一个解决方案:
myBean(MyBean) { bean ->
bean.autowire = 'byName'
}
但我不想在 resources.groovy
中为所有 Class 创建此条目,那么是否有在特定文件夹中自动装配所有 类 的解决方案?
我正在使用 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
您可以在 src/groovy
中创建一个 class com.example.MyClass
一个 Spring bean,方法是将以下内容添加到 BuildConfig.groovy
grails.spring.bean.packages = ['com.example']
并用 @Component
注释 class,例如
@Component
class MyClass {
@Value('${conf.apiVersion}')
String apiVersion
@Autowired
SomeService someService
}
如上所示,您可以使用 Spring 注释(例如 @Value
和 @Autowired
来依赖注入 class。我发现这是一种比修改 resources.groovy
.
更方便的注册 Spring bean 的方法
我希望能够在我的 Groovy Classes 和 /src/groovy
中包含服务我找到了一个解决方案:
myBean(MyBean) { bean ->
bean.autowire = 'byName'
}
但我不想在 resources.groovy
中为所有 Class 创建此条目,那么是否有在特定文件夹中自动装配所有 类 的解决方案?
我正在使用 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
您可以在 src/groovy
中创建一个 class com.example.MyClass
一个 Spring bean,方法是将以下内容添加到 BuildConfig.groovy
grails.spring.bean.packages = ['com.example']
并用 @Component
注释 class,例如
@Component
class MyClass {
@Value('${conf.apiVersion}')
String apiVersion
@Autowired
SomeService someService
}
如上所示,您可以使用 Spring 注释(例如 @Value
和 @Autowired
来依赖注入 class。我发现这是一种比修改 resources.groovy
.