Mule-将流或会话变量注入Springbean

Mule-将流或会话变量注入Springbean,mule,Mule,我试图将一个变量传递给Springbean,如下所示: <component doc:name="Java"> <no-arguments-entry-point-resolver /> <prototype-object class="org.test.MyComponent"> <property key="fileName" value="#[sessionVars.f

我试图将一个变量传递给Springbean,如下所示:

<component doc:name="Java">
            <no-arguments-entry-point-resolver />
            <prototype-object class="org.test.MyComponent">
                <property key="fileName" value="#[sessionVars.filename]" />
            </prototype-object>
        </component>


但这个表达永远无法解决?还有其他方法吗?

当Mule服务器启动时,加载每个元素,并创建
组件和
弹簧对象。我认为您不能将会话变量或除
上下文属性之外的任何变量传递给服务器启动时发生的对象创建。

当Mule服务器启动时,加载每个元素,并创建
组件和
spring对象。我认为您不能将会话变量或除上下文属性以外的任何变量传递给服务器启动时发生的对象创建。

这与spring配置和Mule Expression language(MEL)混淆

第1点: 即使组件是在Mule配置文件中定义的。元素(标记)
来自Springbean模式定义。因此,MEL不会解释
的属性值

第2点:由于它是作为setter注入提供的,在加载(实例化)期间调用,因此会话变量的值(运行时值)将不可用

一个可能的解决方案是使组件实现Mule的可调用接口。这样您就可以访问包含会话变量的MuleMessage

@Override
public Object onCall(MuleEventContext eventContext) throws Exception {          
    MuleMessage muleMessage = eventContext.getMessage();
    muleMessage.getProperty("propertyName", PropertyScope.SESSION);

希望这有帮助。

这与spring配置和Mule表达式语言(MEL)有混淆

第1点: 即使组件是在Mule配置文件中定义的。元素(标记)
来自Springbean模式定义。因此,MEL不会解释
的属性值

第2点:由于它是作为setter注入提供的,在加载(实例化)期间调用,因此会话变量的值(运行时值)将不可用

一个可能的解决方案是使组件实现Mule的可调用接口。这样您就可以访问包含会话变量的MuleMessage

@Override
public Object onCall(MuleEventContext eventContext) throws Exception {          
    MuleMessage muleMessage = eventContext.getMessage();
    muleMessage.getProperty("propertyName", PropertyScope.SESSION);
希望这有帮助