【问题标题】:Multiple Type Converters in Apache CamelApache Camel 中的多种类型转换器
【发布时间】:2015-02-17 14:44:39
【问题描述】:
我的 jar 中有一个 HashMap 到字符串类型转换器,比如 A.jar,但另一个 jar 中存在一个类似的转换器,B.jar(由同一服务器中的第三方公开)但我总是想要我的类型转换器(存在于 A.jar 中)以在我调用时在我的骆驼路线中被调用
String body=message.getBody(String.class);
知道如何做到这一点吗?
【问题讨论】:
标签:
java
apache-camel
typeconverter
【解决方案1】:
如果类加载器在同一个骆驼上下文中加载了两个 jar,那么这里很有可能出现问题。
你可以解决它。
首先,您可以只使用对特定类型转换器的 bean 引用(而不是 getBody(String.class))。
或者其次,您可以在运行时侵入TypeConverterRegistry,看看是否可以删除不需要的,请参阅:context.getTypeConverterRegistry()。
【解决方案2】:
您可以创建一个仅包含字符串元素的包装类。让我们称之为 WrapperString。
定义这个包装类的 toString() 方法只返回 String 元素。
修改你的转换器,从 Hashmap 到 String 到 Hashmap 到 WrapperString。
在转换逻辑中,您只需编写自己的逻辑将 hashmap 转换为 String,然后创建 WrapperString 类的实例并将转换后的值分配给该对象。