Grails プロジェクトで、特定のプロジェクトごとに実装可能な「フック」を備えたバイナリ プラグインを構築したい
バイナリプラグイン構造
MyService (サービス) MyHookClassInterface myHookClass MyHookServiceInterface myHookService MyHookClassInterface (インターフェース) MyHookServiceInterface (インターフェース)
主なプロジェクト構造
ProjectHookClass は MyHookClassInterface (groovy クラス) を実装します ProjectHookService は MyHookServiceInterface (サービス) を実装します resources.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) で
どうも
ファビオ