面向 Java 程序员的 Java in Mule

您已经做了很多年的 Java 程序员,并且希望在 Mule 应用程序中重用您的技术技能和知识。在本文中,您将了解可以直接在 Mule 应用程序中包含 Java 代码的典型用例。如果您有兴趣了解更多关于 Java 和 Mule 的信息,请参加 Boost your Java career with Mule Integration 聚会,在那里您有机会获得免费的专业培训和认证。

介绍
在本文中,您将看到三个 Mule 用例,您可以在其中直接使用 Java 编写代码:

Java 数据类型。

DataWeave 中的 Java 调用。

感谢 Java 模块的 Java 调用。

以下是本文中将使用的两个 Java 类:

客户类:一个经典类,也称为 POJO(普通旧 Java 对象)。

CustomerUtil 类:用于操作 Customer 类的实用工具类。

package com.mulesoft.training;
public class Customer {
    private String lastName;
    private String firstName;
    private int age;
    public Customer(String lastName, String firstName, int age) {
        setLastName(lastName);
        setFirstName(firstName);
        setAge(age);
    }   
    // Getters and setters removed for brevity
    public String toString() {
        return(getLastName()+" "+getFirstName()+" ("+getAge()+")");
    }   
}
package com.mulesoft.training;
import java.util.ArrayList;
import com.mulesoft.training.Customer;
public class CustomerUtil {
    public static ArrayList<Customer> customerTestList()
    {   
        ArrayList<Customer> array = new ArrayList<Customer>();
        array.add(new Customer("Simpson","Homer",39));
        array.add(new Customer("Simpson","Lisa",8));
        array.add(new Customer("Simpson","Bart",10));
        array.add(new Customer("Simpson","Marge",36));
        array.add(new Customer("Simpson","Maggie",1));
        return array;
    }
}

在这里插入图片描述
请记住:在使用 Anypoint Studio 开发的 Mule 项目中,您必须将这些文件放入 src/main/java 目录中。

使用 POJO 定义数据类型
在 Mule 应用程序中,您可以使用许多数据类型,例如 RAML(用于 JSON)或 XSD(用于 XML)。不幸的是,这些数据类型中的大多数在数据类型方面都不是很严格。这就是为什么当你想要确定一个类型时,你可以使用 Java 对象。在 Mule 应用程序中,使用 Java 作为内部数据类型是很常见的。
在这里插入图片描述
要在 Mule 应用程序中使用 Java 类作为数据类型,必须在元数据类型中将其声明为类型。
在这里插入图片描述
在菜单中,您必须为数据类型提供一个名称:Customer-pojo,选择类型 Object 并指定要使用的类:com.mulesoft.training.Customer

现在,您可以在应用程序中的任何位置使用 Customer-pojo 元数据类型。通常,它可以在转换处理器中使用,也可以直接在处理器的 DataWeave 表达式中使用。

如果您熟悉 Java Streams 和 lambda,并希望了解如何在 DataWeave 脚本中复制它们,我建议您阅读 DataWeave 函数链接 for Java 程序员和 DataWeave lambda for Java 程序员博客,其中介绍了方法链、Java Stream API 和 lambda。

从 DataWeave 调用 Java 方法
DataWeave 是一种强大的转换语言,可以满足您的绝大多数需求;但是,您可能会发现有必要(或更喜欢)在 Java 类中将转换实现为静态方法。您可以直接在 DataWeave 脚本中使用该静态方法。

下表显示了 Java 和 DataWeave 中 CustomerUtil 类的导入和使用:

DataWeave 脚本将是:

%dw 2.0
output application/json
import java!com::mulesoft::training::CustomerUtil
CustomerUtil::customerTestList()

在 Anypoint Studio 中,有一个不错的功能叫做预览,它允许您在不启动 Mule 引擎的情况下显示 DataWeave 表达式的结果。
在这里插入图片描述
这是一个返回 JSON 对象数组的简单示例,但您可以设想将数据作为参数传递给静态类,并对其应用复杂的转换,并返回该转换的结果。

使用 Java 模块调用 Java 方法
尽管大多数逻辑都可以在 DataWeave 中实现,但您有时需要或想要实例化 Java 对象并调用其方法。为此,请在可用模块列表中添加显示为 Java 的 MuleSoft Java 模块。
在这里插入图片描述
要在 Mule Palette 视图中安装 Java 模块,请单击“添加模块”,然后在右侧拖放 Java 模块。
在这里插入图片描述
Java 模块允许您:

在已实例化的对象上调用方法。

在类上调用静态方法。

创建一个新对象。

验证对象类型。

下一步是使用 New 处理器实例化,并使用 Invoke 处理器将 Java 类调用到 Flow 中。
在这里插入图片描述
在“新处理器”中,必须通过选择其构造函数来选择要实例化的 Java 类,并传递任何必要的参数。参数需要以 JSON 格式编写,并且键必须与 Java 构造函数参数的名称匹配。
在这里插入图片描述
默认情况下,新实例化的对象存储在 Mule 有效负载中,但您可以将其配置为存储在变量中,因此可以通过vars.variableName

默认情况下,调用处理器将输入有效负载作为输入,并将方法的结果存储在输出有效负载中。
在这里插入图片描述
结论
现在,我们已经看到了在 Mule 应用程序中利用 Java 的三种不同方式。MuleSoft 强烈提倡、认可并使其易于采用重用方法进行开发,因此,如果您已经开发了 Java 类,则可以在 Mule 应用程序中轻松重用所有这些类。

  • 33
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小徐博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值