我的流程中有一行如下所示:
<jms:inbound-endpoint queue="${queue.name}" connector-ref="${inbound.connector}" doc:name="Inbound Endpoint">
&#34; $ {inbound.connector}&#34; property是指我的属性文件中的字符串:
inbound.connector=Active_MQ
我这样做的原因是因为连接器-ref将根据环境而变化。有时它将是一个Active_MQ连接器,有时它将是一个JMS连接器。
属性文件在src / main / resources下,应该是这样。我在流程中有其他属性可以很好地从属性文件中读取,例如&#34; queue.name&#34;属性。但是,由于某些原因,当我尝试启动Mule时,它返回错误说:
NoSuchBeanDefinitionException: No bean named '${inbound.connector}' is defined.
据我所知,connector-ref值只是一个字符串,所以这应该在理论上有效。我不明白这个错误。 connector-ref实际上不是字符串,这种方法是非法的吗?
答案 0 :(得分:0)
内部mule运行时在应用程序启动时创建/初始化所有连接器对象(spring bean),如HTTP Connectors,DATASOURCE连接器和各种其他连接器。所有这些连接器都只是一个春天的bean,因为Mule是在Springframework上编写的。因此,通过在需要对象的字符串值中传递它是不可能的。