在spring-boot 2.0 rest控制器中,我创建了以下代码,它可以按照需要运行:
@ResponseBody
@GetMapping("/test3")
Mono<List<String>> test3(){
List<String> l1 = Arrays.asList("one","two","three");
List<String> l2 = Arrays.asList("four","five","six");
return Flux
.concat(Flux.fromIterable(l1),Flux.fromIterable(l2))
.collectList();
}
我的问题来自于尝试从外部数据源执行相同的操作。我创建了以下测试用例:
@ResponseBody
@GetMapping("/test4")
Flux<Object> test4(){
List<String> indecies = Arrays.asList("1","2");
return Flux.concat(
Flux.fromIterable(indecies)
.flatMap(k -> Flux.just(myRepository.getList(k))
.subscribeOn(Schedulers.parallel()),2
)
).collectList();
}
myRepository如下:
@Repository
public class MyRepository {
List<String> l1 = Arrays.asList("one","two","three");
List<String> l2 = Arrays.asList("four","five","six");
Map<String, List<String>> pm = new HashMap<String, List<String>>();
MyRepository(){
pm.put("1", l1);
pm.put("2", l2);
}
List<String> getList(String key){
List<String> list = pm.get(key);
return list;
}
}
我的代码标记为test4,给出了代码提示错误:
类型不匹配:无法转换为Flux&lt;列表&lt;字符串&gt;&gt;发布者&lt; ? extends Publisher&lt; ? extends Object&gt;&gt;
所以有几个问题:
预期输出为:[[“one”,“two”,“three”,“four”,“five”,“six”]]
答案 0 :(得分:1)
使用M. Deinum的评论,这是有效的:
$ cd ..
$ git add strangersPro