当前位置: 首页 > 知识库问答 >
问题:

Spring反应:操纵通量成单声道型响应

凌照
2023-03-14

我对Spring Reactive还是个新手。

我想将一个Spring反应式回购通量响应转换为另一种类型的单声道响应:

@Transactional(readOnly = true)
@Override
public Mono<BaseListResponseVm<AcsTransactionVm>> transactionsBy(
        @NonNull Integer offset,
        @NonNull Integer limit,
        @NonNull String term,
        AcsTransactionRequestDto dto
) {
    var response = new BaseListResponseVm<AcsTransactionVm>();
    var list = repository.findByPan(term, PageRequest.of(offset, limit));

    return repository.findByPan(term, PageRequest.of(offset, limit))
            XXXXX.(res -> {
                response.setItems(); // List<AcsTransactionVm>
                response.setCount(); // Long
            });
}
public interface AcsTransactionRepository extends ReactiveCassandraRepository<AcsTransactionDao, Integer> {

    @AllowFiltering
    Flux<AcsTransactionDao> findByPan(String term, Pageable page);

}

我已经尝试了提供的运算符(转换是我需要的闭包,但它仍然将repo结果的每一个参数都提供为reactive参数),但最终不能得到任何我知道如何使用的东西。

共有1个答案

何哲
2023-03-14

看来是这样做的:

@Transactional(readOnly = true)
@Override
public Mono<BaseListResponseVm<AcsTransactionVm>> transactionsBy(
        @NonNull Integer offset,
        @NonNull Integer limit,
        @NonNull String term,
        AcsTransactionRequestDto dto
) {
    log.debug("DB: fetching ACS transactions using offset {}, limit {}, term {} and request {}", offset, limit, term, dto);
    var response = new BaseListResponseVm<AcsTransactionVm>();

    return repository.findByPan(term, PageRequest.of(offset, limit))
            .collectList().map(transactions -> {
                var mappedItems = transactions.stream()
                        .map(mapper::toVm)
                        .collect(Collectors.toList());
                response.setItems(mappedItems);

                return response;
            });
}
 类似资料:
  • 我有一个服务电话返回单声道。现在,在给用户提供API响应的同时,我想发送一些响应。我试过用flatMap和地图,但它不起作用。它给了我一个空的身体作为回应。 谢谢你

  • 我在我的项目中使用了spring-boot-starter-webflux、ractor-test和spring-boot-starter-test 2.0.0.m7。在我的中有一个,您可以通过方法添加字符串值。还可以询问通过方法添加到列表中的所有值。问题是如何测试?我有,但它似乎不起作用,因为返回的总是0。我知道问题是中的方法,但我不知道原因和如何解决它。有人知道我应该如何创建一个有效的Juni

  • 我有一个 其中func()返回Mono。将此对象列表转换为并从流返回的最简单方法是什么?

  • 这是使用注释代码示例的Spring集成执行器通道的后续问题。 我试图通过在“公共频道”中发布一条消息并阅读味精中设置的REPLY_CHANNEL来测试用红色突出显示的框。 “公共通道”是发布-订阅通道。REPLY_通道是一个队列通道。 由于这是一个JUnit测试,我已经模拟了jdbcTemboard、数据源和Impl以忽略任何DB调用。 我的问题是:当我在“公共频道”上发布消息时,我在REPLY\

  • 我正在使用Spring 5 webflux和ReactiveMongorPositories。假设我有两个系列“竞赛”和“竞赛参与”: 我需要找到一个特定用户参与的比赛页面。 我使用的解决方案是调用这将返回一个