java - Spring webflux 将 Entity 类转换为 Mono DTO 对象
问题描述
首先,我是spring webflux的新手,并试图在设置反应式spring boot项目时进行POC。我有一个用例,我需要将检索到的实体类(PartyDTO)转换为Mono对象(Person:which是没有构造函数的第三方业务对象,我无法修改它)。我用谷歌搜索但无法找到与我的用例匹配的答案。
第三方对象:
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);
}
}
如上所示,我尝试将平面图与我的自定义映射器一起使用,但它不起作用。有人可以建议我如何以非阻塞方式实现这一点(如果它支持非阻塞方法,第 3 方 bean 映射器也可以)
解决方案
假设partyRepository.findById()
返回 Mono ,你可以简单地做
@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-
推荐阅读
- c# - Asp.Net,UpdatePanel 中的文本框文本更改问题
- java - 显式类型转换浮点到字节
- java - SonarQube & JaCoCo (mvn) 命名约定
- angular - 如何以角度形式保留值
- r - 如何在 ggplot2 的同一年分散温度?
- python - gir1.2-secret-1 已安装但无法被 masal-extensions python 包识别
- jquery - 使用表单提交中的日期设置 daterange 插件输入
- sql - 如何组合 SUM(Cases) 和多个表
- pom.xml - 使用 jenkins 将 java 合同发布到协议流时出现未经授权的错误
- docker - 如何在没有“服务容器”的情况下在 Github Workflow 中使用 docker-compose/docker 连接到服务?