java - 如何将 XStream 引用传递给 Camel 进行编码

标签 java apache-camel xstream

示例代码来自http://camel.apache.org/xstream.html

If you would like to configure the XStream instance used by the Camel for the message transformation, you can simply pass a reference to that instance on the DSL level.

XStream xStream = new XStream();
xStream.aliasField("money", PurchaseOrder.class, "cash");
// new Added setModel option since Camel 2.14
xStream.setModel("NO_REFERENCES");
...

from("direct:marshal").
  marshal(new XStreamDataFormat(xStream)).
  to("mock:marshaled");

但是这段代码是错误的,因为org.apache.camel.model.dataformat.XStreamDataFormat构造函数只接受字符串。如何在camel中配置自定义com.thoughtworks.xstream.XStream

我不想使用 XML,我的应用程序正在使用 Spring。

最佳答案

如果你想快速完成它,你可以重定向到一个编码“bean”,而不是通过“编码”,它会按照你需要的方式进行编码。

from(...).bean('marshallingBean').to(...)

完整代码

@Autowired
FooDeserializer fooDeserializer;

@Bean
public RouteBuilder route() {
    return new RouteBuilder() {
        public void configure() {
            from("direct:marshal")
                    .bean(fooDeserializer)
                    .to("mock:marshaled");
        }
    };
}

FooDeserializer.java

@Component
public class FooDeserializer {

    private final XStream xStream;

    public FooDeserializer() {
        xStream = new XStream();
        xStream.aliasField("money", PurchaseOrder.class, "cash");
    }

    public Foo xmlToFoo(String xml) {
        return (Foo) xStream.fromXML(xml);
    }

}

关于java - 如何将 XStream 引用传递给 Camel 进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28605782/

相关文章:

java - 如何模拟下游方法调用?

java - 在 Java 中使用什么集合代替二维数组?

java - Camel : stackoverflow error when route is called recursively

java - 使用 XStream 将字符串日期时间转换为 Java Long

java - XStream 使用 getter 进行序列化

java - 是否可以在同一系统上同时运行两个服务器?或者当 XAMPP/WAMP 未运行时如何在 Eclipse 中执行 MySQL 查询?

java - 使用 MultivalueMap 后调用中的问题

spring - 使用 camel http4 的系统属性代理设置

java - Apache Camel组件参数

java - 使用 xstream 的自定义转换器