我正在使用Camel和Spring Boot。在基本上记录消息体的服务路由实现期间,我看到了如下所示的错误。
No converter found capable of converting from type [com.example.Book] to type [java.lang.String]
我的路线是:
from(REST_ENDPOINT_URI)
.log("${headers}")
.log("${body}")
我在日志主体行中收到错误。
我的问题是预期的行为?为什么Camel只是调用toString
对象的Book
方法。如果这是预期的行为,那么我需要为每个新的复杂类型使用字符串转换器?
答案 0 :(得分:0)
您可以创建一个可重现问题的可运行示例吗?这绝对是Camel通过调用toString
来处理的场景。
例如,您可以使用以下方法进行测试:
@Component
public class DemoRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
from("timer:sender?delay=5s&period=3s")
.setBody(constant(new Book("Lord of the Rings", "J.R.R. Tolkien")))
.log("${body}!");
}
public static class Book {
private final String title;
private final String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
@Override
public String toString() {
return "Book{" +
"title='" + title + '\'' +
", author='" + author + '\'' +
'}';
}
}
}
这导致以下输出:
2016-08-30 11:57:49.802 INFO 8778 --- [timer:// sender] route1:预订{title ='指环王',作者=' J.R.R。托尔金'}!
2016-08-30 11:57:52.792 INFO 8778 --- [timer:// sender] route1:预订{title ='指环王',作者=' J.R.R。托尔金'}!
2016-08-30 11:57:55.795 INFO 8778 --- [timer:// sender] route1:预订{title ='指环王',作者=' J.R.R。托尔金'}!