公司的新项目采取spring webflux 的架构,之前没有学习过,刚开始学习的时候,跑通demo 的时候,觉得貌似挺简单的,spring 封装得跟mvc一样,使用者完全无缝感知,框架内部自己完成了异步调用的逻辑,单独使用flux 和mono的时候,还相对简单。
现在有个场景是,我需要从表a里取数据,然后根据a中的关联id 分别从b和c 表取数据,最后封装数据;
一开始的写法,发现返回的结果中,title 和num 并没有值,日志中,异步调用的结果是在结果返回之后复制的
return articleRepository.findAll().map(article -> {
ArticleVO articleVO = new ArticleVO();
articleVO.setId(article.getId());
articleVO.setName(article.getName());
return articleVO;
}).map(articleVO -> {
articleTitleRepository.findByArticleId(articleVO.getId()).subscribe(articleTitle -> articleVO.setTitle(articleTitle.getTitle()));
return articleVO;
}).map(articleVO -> {
articleExtRepository.findByArticleId(articleVO.getId()).subscribe(articleExt -> articleVO.setNum(articleExt.