Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Drools KnowledgeAgent依赖于具有Spring配置的自定义组件?_Spring_Drools - Fatal编程技术网

如何使Drools KnowledgeAgent依赖于具有Spring配置的自定义组件?

如何使Drools KnowledgeAgent依赖于具有Spring配置的自定义组件?,spring,drools,Spring,Drools,我的KnowledgeAgent设置为 <drools:kagent kbase="kbase" id="knowledgeAgent" new-instance="false" > <drools:resources> <drools:resource source="classpath:change-set.xml" type="CHANGE_SET" /> </drools:resources> <

我的KnowledgeAgent设置为

<drools:kagent kbase="kbase" id="knowledgeAgent" new-instance="false" >
    <drools:resources>
        <drools:resource source="classpath:change-set.xml" type="CHANGE_SET" />
    </drools:resources>  
  </drools:kagent>

因此,它从类路径扫描change-set.xml以查找资源。我还有另一个组件,它将根据磁盘上的规则文件动态生成change-set.xml。这方面的spring配置是

<bean id="changesetHandler" class="ChangesetHandler" autowire="byName" lazy-init="true" /> 


这里的问题是change-set.xml是由我的自定义组件生成的,但我无法将Drools KnowledgeAgent组件设置为依赖于它,因为它本身似乎没有依赖于属性的属性。

鉴于知识代理侦听更改,它应该在bean生成更改集后立即重新加载知识库。为什么不先加载一个默认的空变更集,然后在动态变更集生成后再加载呢


就我个人而言,我避免使用Drools Spring组件。我发现在我的应用程序中创建一个包含我的知识库的服务更容易。然后,我可以在该服务中定义我喜欢的任何依赖项,并确保任何初始化都已完成。

感谢@Steve,这是一个很好的解决方法,可以“手动”从服务加载更改集,并跳过这部分的xml配置。我使用的是Grails,所以我对使用Spring非常感兴趣。我一直都在使用Spring。我只是不使用口水弹簧的东西。:)