【发布时间】:2019-01-21 09:04:34
【问题描述】:
我有一个要映射的 UserDTO 和 User 实体。创建新用户时,某些字段(例如:password、modifiedBy)必须通过某种自定义方法生成(例如:password 是随机生成和编码的,但modifiedBy 用户名是从安全服务中检索的) .为此,我将一些服务自动连接到映射器中。他们中的许多人返回String,而 MapStruct 无法理解在每种情况下使用哪一个,而只是使用它在所有接受 String 作为输入的东西上找到的第一个。
@Mapper(componentModel = "spring", uses = PasswordEncoder.class)
public interface UserMapper {
@Mapping(target = "password", qualifiedByName = "PASS")
User mapUser(UserDto dto);
@Named("PASS")
default String getPass(PasswordEncoder passwordEncoder){
return passwordEncoder.encode(some_random_generator);
}
}
这生成的代码只使用来自PasswordEncoder 的方法,在任何接受String 和getPass(...) 方法的setter 中根本不使用。
但是我需要它才能在 password 字段上使用我的 getPass(...) 方法。
【问题讨论】:
标签: java spring-boot mapstruct