我有一些Spring Boot应用程序(作为微服务),每个应用程序都有一个Repository,如:
@RepositoryRestResource(collectionResourceRel = "cart", path = "cart")
@CrossOrigin
public interface CartRepository extends PagingAndSortingRepository<Cart, Long> {
当我保存“Cart”实体时,@RepositoryEventHandler类将实体作为json字符串发送到Apache Kafka主题:
@HandleAfterCreate
public void handleAfterCreate(final Cart cart) throws JSONException, JsonProcessingException {
final JSONObject json = new JSONObject(mapper.writeValueAsString(cart));
json.put("eventType", "saved");
sender.send(json.toString());
}
最后,另一个Spring Boot应用程序消耗了Kafka的主题。
在这里,我通过在其他微服务器上调用RestTemplate.getForObject(...)
来获取一些相关信息。
String templateURL="http://localhost:6060/api/cart/{id}/articles";
Map<String, Long> parameters = new HashMap<>();
parameters.put("id", cartId);
String result = restTemplate.getForObject(templateURL, String.class, parameters);
JSONObject obj = new JSONObject(result);
obj
包含以下内容:
{"_embedded":{"articles":[{"id":1},{"id":2}]},"_links":{"self":{"href":"http://localhost:7074/api/cart/1/articles"}}}
但是我找不到从json那里得到所有文章的方法。
我尝试过:
Object articles = obj.get("articles");
但它不起作用。我已经看过其他答案,如this或类似,但我可以解决我的问题。
那么,如何通过RestTemplate从RepositoryRestResource获取JSONArray?
由于