Mule/Spring - 在 Java 中调用通知对象

Mule/Spring - Call informed object in Java

我在 Muleflow 中使用了一些 classes。

在其中一个 Java classes 中,我 设置了一个具有一些值的对象

最后我想调用那个对象并设置值。

我有一个 spring bean class:

<spring:bean id="personObject" class="object.Person" />

然后,最后,在我的 Java 代码中,我使用:

    @Override
    public Object onCall(MuleEventContext arg0) throws Exception {
      Person person = arg0.getMuleContext().getRegistry().lookupObject("personObject");
}

但是 person returns 所有值为 null

Person class 的所有字段都有 setter 和 getter。

我做错了什么?

我认为这里的问题是,Spring bean 在部署应用程序时包含 Person class 的初始状态,之后它不会刷新。

您可以尝试其他方式,而不是在全局元素中创建 spring bean,您可以在完成如下设置数据后从 java 代码将人员对象添加到注册表(你应该 return 来自这个 class 的 Mule 事件上下文)。

@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
    Person per = new Person();
    per.setName("Mulesoft");
    eventContext.getMuleContext().getRegistry().registerObject("personObject", per);
    return eventContext;
}

从流程中的其他 java classes,您可以读取 person 对象值,例如

@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
    Person person = eventContext.getMuleContext().getRegistry().lookupObject("personObject");
    System.out.println("Name is :"+person.getName());   
    return null;
}

如果您喜欢这种方法,请尝试一下。