1

在 grails progect 上,我想构建一个带有“hook”的二进制插件,可以在每个特定项目上实现

二进制插件结构

我的服务(服务)
  MyHookClassInterface myHookClass
  MyHookServiceInterface myHookService

MyHookClassInterface(接口)
MyHookServiceInterface(接口)

主要项目结构

ProjectHookClass 实现 MyHookClassInterface (groovy 类)
ProjectHookService 实现 MyHookServiceInterface(服务)

资源.groovy
豆子= {
  myHookClassInterface(ProjectHookClass)
  myHookServiceInterface(ProjectHookService)
}

该解决方案使用源插件就像一个魅力,但不会以二进制模式注入 MyService 依赖项。我还启动了 grails 控制台并 ctx.getBean('myHookClassInterface') 返回:

org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义名为“myHookClassInterface”的bean
    在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529)
    在 org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095)
    在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277)
    在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:269)
    在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    在 org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093)
    在 org.springframework.beans.factory.BeanFactory$getBean.call(未知来源)
    在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
    在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
    在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
    在 ConsoleScript0.run(ConsoleScript0:1)

谢谢

法比奥

4

1 回答 1

1

已解决:问题与二进制插件上存在 resources.groovy 有关。在这种情况下,grails 启动过程无法合并插件和项目 resources.groovy。如果可以的话,删除插件的resources.groovy 就足够了。

于 2012-06-22T08:45:26.257 回答