Я преобразовываю объект в json с интеграцией spring.
<int-jdbc:inbound-channel-adapter query = "SELECT * FROM posts" row-mapper = "postMapper"
channel = "dataInbound" data-source = "dataSource">
<int:poller fixed-rate = "5000" />
</int-jdbc:inbound-channel-adapter>
<int:channel id = "dataInbound" />
<int:object-to-json-transformer input-channel = "dataInbound" output-channel = "printing"/>
<int:service-activator id = "printing" method = "print"
input-channel = "print" ref = "eventActivator"/>
<bean id = "postMapper" class = "com.example.domain.PostsMapper"/>
<bean id = "eventActivator" class = "com.example.Dispatcher"/>
public class Posts {
private String id;
private String title;
private String author;
...Constructor and setters/getters...
}
public class PostsMapper implements RowMapper<Posts> {
public Posts mapRow(ResultSet rs, int rowNum) throws SQLException{
String id = rs.getString("id");
String title = rs.getString("title");
String author = rs.getString("author");
return new Posts(id, title, author);
}
}
Но как вывести трансформер в консоль <int:service-activator>.
Ну, я попробовал это, но это не сработало:
public void print(List<Posts> posts){
for (Posts post: posts){
System.out.print("\n***** " + post);
}
}
Ошибки, которые я получаю:
Failed to convert from type [java.util.ArrayList<?>] to type [java.util.List<com.example.domain.Posts>] for value '[{id=1, title=test, author=me}]'; nested exception is org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.util.LinkedHashMap<?, ?>] to type [com.example.domain.Posts]
No converter found capable of converting from type [java.util.LinkedHashMap<?, ?>] to type [com.example.domain.Posts]
Problem invoking method: public void com.example.Dispatcher.print(java.util.List)
Так как же должен выглядеть мой bean для печати на консоли?




Пожалуйста, внимательно прочитайте трассировку стека. Ваша проблема не связана с выводом на консоль. Ты там не рядом.
Посмотрите на эту ошибку еще раз:
No converter found capable of converting from type [java.util.LinkedHashMap<?, ?>] to type [com.example.domain.Posts]
Итак, ваш payload на самом деле не List<Posts>, а ArrayList<LinkedHashMap<?, ?>>, в конце концов.
Хотя не знаю как. По умолчанию <int:object-to-json-transformer> создает представление string для JSON. Вы, вероятно, делаете что-то еще, что не отображается в вопросе...
ОБНОВЛЯТЬ
Чтобы решить вашу насущную проблему, вам просто нужно, чтобы ваш print() был таким:
public void print(List<Map<?, ?>> posts){
Однако, согласно вашему List<Posts>, совершенно непонятно, зачем преобразовывать результат List<Posts> из <int-jdbc:inbound-channel-adapter> в JSON, поскольку он / она не ожидает JSON в нисходящем направлении.
Ну, я отредактировал свой вопрос. Добавил все ошибки не знаю поможет ли.