springwebflux将实体类转换为mono-dto对象

ao218c7q  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(597)

首先,我对springwebflux还很陌生,我正在尝试做一个poc来建立一个被动的spring启动项目,我需要将检索到的实体类(partydto)转换为mono对象(person:这是一个没有构造函数的第三方业务对象,我不能修改它)。
第三方对象:

public class Person {
        // no constructors 
        private Integer custId;
        private String fullname;
        private LocalDate date;
        //
        getters and setters
    }

我的课程如下:

@Table("party")
public class PartyDTO {

    @Id
    private Integer party_id;
    private String name;
    private LocalDate start_date;
}

调用我的存储库的服务类。

@Service
     public class ServiceImpl{

     @Override
        public Mono<Person> getParty(String partyId) {
            return 
    partyRepository.findById(Integer.parseInt(partyId)).flatMap(//mapper to convert PartyDTO to Person goes here);
        }
}

我试着在自定义Map器中使用flatmap,如上图所示,但它不起作用。有人能告诉我如何以非阻塞方式实现这一点吗(如果第三方beanMap器支持非阻塞方式,它也可以)

b5buobof

b5buobof1#

假设 partyRepository.findById() 返回一个单声道,你可以简单的做

@Service
         public class ServiceImpl{

         @Override
            public Mono<Person> getParty(String partyId) {

       return partyRepository.findById(Integer.parseInt(partyId)).map(partyDto->{
         Person person = new Person();
         person.setName(partyDto.getName());
         return Mono.just(person);
});
            }
    }

你可以参考https://projectreactor.io/docs/core/release/api/reactor/core/publisher/mono.html#just-t型-

相关问题