【发布时间】:2021-10-10 04:31:06
【问题描述】:
我有以下端点:
public void save(@Valid @RequestBody SaveRequest request) {
demoService.save(request);
}
在SaveRequest 中,我传递了一个productUuid,如下所示。
@Data
public class SaveRequest {
private UUID productUuid;
private DetailsRequest detailsRequest;
}
这是我的服务方法:
public void save(final SaveRequest request) {
detailService.getDetails(request.getProductUuid());
// code omitted
}
我想做的是;我只想将productUuid 作为列表而不是单个元素传递。 private List<UUID> productUuid;
我以为我可以为SaveRequest中的每个productUuid调用服务方法,而不是使用类似于以下的方法来修改服务方法。然后我从 Controller 调用这个方法,而不是服务的 save 方法。
public void saveList(final SaveRequest request) {
request.getProductUuidList().stream()
.map(this::save)
.collect(Collectors.toList());
}
但我无法使用它。那么,我应该如何解决这个问题呢?如果使用saveListmethood 并为SaveRequest 中的每个productUuid 调用save 方法是一个好方法,那么最好在不更改save 方法的情况下使用它。
【问题讨论】:
-
demoService.save()接受SaveRequest。使用request.getProductUuidList().stream().map(this::save),您传递给它的是UUID(假设request.getProductUuidList()是List<UUID>)。也许处理多个产品的方式是修改服务方法。 -
是的,这正是问题所在。通常这并不太难,但是由于我必须根据
request中的列表的每个元素通过request,所以我失败了。有什么想法吗? -
您正在使用
collect(Collectors.toList())。你到底想收集什么? -
不需要收集,可以省略。只需要根据列表多次调用
save方法即可。在这个场景中,我想我应该需要在流中使用索引。真的吗?你的建议是什么? -
而不是
stream.map.collect尝试forEach将元素传递给消费者。
标签: java arrays spring list java-stream