Spring webflux 将实体 class 转换为 Mono DTO 对象
Spring webflux convert Entity class to Mono DTO object
首先,我是 spring webflux 的新手,正在尝试做一个关于设置反应式 spring 启动的 POC project.i 有一个用例,我需要将检索到的实体 class(PartyDTO) 转换为 Mono 对象(Person:这是一个没有构造函数的第三方业务对象,我无法修改它)。我用谷歌搜索但无法找到符合我的用例的答案。
第 3 方对象:
public class Person {
// no constructors
private Integer custId;
private String fullname;
private LocalDate date;
//
getters and setters
}
我的class如下:
@Table("party")
public class PartyDTO {
@Id
private Integer party_id;
private String name;
private LocalDate start_date;
}
调用我的存储库的服务 class。
@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);
}
}
我尝试将平面图与我的自定义映射器一起使用,如上所示,但它不是 working.Can 有人建议我如何以非阻塞方式实现这一点(如果第 3 方 bean 映射器也很好,它支持非阻塞方法)
假设 partyRepository.findById()
returns 一个 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-
首先,我是 spring webflux 的新手,正在尝试做一个关于设置反应式 spring 启动的 POC project.i 有一个用例,我需要将检索到的实体 class(PartyDTO) 转换为 Mono 对象(Person:这是一个没有构造函数的第三方业务对象,我无法修改它)。我用谷歌搜索但无法找到符合我的用例的答案。
第 3 方对象:
public class Person {
// no constructors
private Integer custId;
private String fullname;
private LocalDate date;
//
getters and setters
}
我的class如下:
@Table("party")
public class PartyDTO {
@Id
private Integer party_id;
private String name;
private LocalDate start_date;
}
调用我的存储库的服务 class。
@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);
}
}
我尝试将平面图与我的自定义映射器一起使用,如上所示,但它不是 working.Can 有人建议我如何以非阻塞方式实现这一点(如果第 3 方 bean 映射器也很好,它支持非阻塞方法)
假设 partyRepository.findById()
returns 一个 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-