【问题标题】:Dynamic autowire in /src/groovy/src/groovy 中的动态自动装配
【发布时间】:2016-06-07 07:13:38
【问题描述】:

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

我找到了解决方案:

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

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

我正在使用 grails 2.4.3

【问题讨论】:

    标签: spring grails autowired


    【解决方案1】:

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

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

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

    它不是完全自动连接的,但似乎是将服务放入 src/groovy 的最佳方式。

    编辑:也适用于 Grails 3

    【讨论】:

      【解决方案2】:

      您可以通过将以下内容添加到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 更方便。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-11
        • 1970-01-01
        • 1970-01-01
        • 2020-12-01
        • 1970-01-01
        • 2012-08-04
        • 2017-01-23
        • 2020-01-08
        相关资源
        最近更新 更多