Grails 从工厂创建服务

标签 grails spring-bean

我想通过依赖注入(inject)在我的 Grails 应用程序中使用用 Java 编写的服务。在没有注入(inject)的 Java 中创建它看起来像这样:

ServiceFactory.newInstance().getElementService()

我想以与为 Controller 、服务和作业注入(inject)服务相同的方式使用它。

class ImportJob {
    def elementService
    ...
}

我知道这应该放在 resources.groovy 中,这是我目前所拥有的:

serviceFactory(ServiceFactory) { bean ->
    bean.factoryMethod = 'newInstance'
}

elementService(ElementService) {

}

我在文档中发现了很少的资源来帮助解决这个问题。我如何完成 elementService 以便它创建如上所述的对象?我应该使用 BeanBuilder 吗?

最佳答案

您可以为此创建一个 FactoryBean,因为它不像调用类中的方法那样直接:

package com.mycompany

import org.springframework.beans.factory.FactoryBean
import org.springframework.beans.factory.InitializingBean

class ElementServiceFactoryBean implements FactoryBean<ElementService>, InitializingBean {

   private ElementService elementService

   ElementService getObject() { elementService }

   Class<ElementService> getObjectType() { ElementService }

   boolean isSingleton() { true }

   void afterPropertiesSet() {
      elementService = ServiceFactory.newInstance().elementService
   }
}

然后您将在 resources.groovy 中将其注册为

elementService(ElementServiceFactoryBean)

关于Grails 从工厂创建服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29704526/

相关文章:

java - 上下文初始化失败(找不到元素 'beans' 的声明) - Spring MVC

java - 如何在初始化期间声明 spring bean

java - 文件上传完整性检查

list - Groovy/Grails组通过字段名的动态列表

grails - 如何使用Groovy显示时间长度?

grails - Grails App插件依赖项加​​载顺序

grails - 通过引用使用grails/groovy类

java - 在没有注释或 xml 配置的情况下创建主要 bean

java - 如何指定 AutoWired Bean 的子依赖项

java - Spring 循环依赖与范围 PROTOTYPE