目录
阅读时间: 3 分钟
我们已经开发了很长时间的软件,并且处理过几种组件模型,如CORBA、EJB、JBI、SCA等等。其中一些,特别是较早的,对编程范式有很大的限制,定义了我们能做什么和不能做什么。由于复杂性的增加及其伴随的困难,开源社区开发了一种更简单、更实用的编程风格:普通Java对象(POJO)模型。在这篇博客中,我们将介绍如何在Camel中使用Bean,包括困难的方式和简单的方式。
使用Bean的困难方式和简单方式
让我们假设我们已经有了一个提供操作(服务)的Bean,你需要在你的集成应用中使用它。比如说HelloBean,它提供了hello函数作为一种服务。
在我们的应用程序中使用这个Bean的各种方法 - 困难的方法
使用纯JAVA调用Bean--使用new()方法
骆驼 "处理器 "允许我们使用JAVA代码来调用Bean
在下面的代码段中,我们看到一个定义了路由的RouteBuilder。使用Camel处理器,我们得到了处理方法,我们可以在其中实现我们的java代码。我们首先从输入中提取消息体。下一步是使用新方法来实例化Bean。最后一步是设置输出。
使用纯JAVA调用一个Bean--使用Autowired
在下面的代码段中,我们使用@Autowired注解初始化了一个变量,从而注入了我们的Bean。使用Camel处理器,我们得到了可以实现我们功能的流程方法。我们首先从输入中提取消息体。下一步是调用Bean,然后设置输出。
上述方法的区别在于,在第一种方法中,我们使用new()方法实例化Bean,而在第二种方法中,我们使用@Autowired Annotation注入Bean。
我们可以看到,由于以下原因,使用Bean是很难的。
- 为了调用Bean,你必须使用Java代码。
- 你必须使用Camel处理器,这使路径变得混乱,并使解释正在发生的事情更加困难。
- Bean必须明确地被实例化,或者我们可以使用依赖性注入
使用Bean的方法更简单
使用 Camel的bean()方法调用Bean
在Camel中调用Bean的方法很简单。我们只需要使用.bean()方法。请看下面的实现。
现在的实现已经大大缩短,只用了两行代码。你仍然让Spring注入HelloBean作为一个依赖关系。这一次,Camel路由没有使用处理器来调用bean,而是使用Camel的bean()方法。
Camel将在名为helloBean的bean实例上调用hello方法,第一个参数是要调用的bean,hello是要调用的方法的名称。
从七行Processor代码减少到只有一行Bean的代码是非常好的。此外,这一行代码在很大程度上更容易理解。这都是高层次的抽象,没有低层次的代码细节,正如内联处理器的情况一样。
结论
在上面的例子中,我们看到实现Bean是多么容易。在纯Java中,我们有两种方法,即使用new()方法,第二种方法是使用@Autowired注解。Apache Camel提供了一种更简单的方法,就是使用bean()方法。这种方式变得非常容易实现,也容易理解代码的工作。
代码片段的参考 :https://github.com/camelinaction/camelinaction2
敬请关注更多博客 :https://blog.knoldus.com/