我有一个地图绘制器
@Component
public class DTOmapper {
private final ModelMapper modelMapper;
public DTOmapper(ModelMapper modelMapper) {
this.modelMapper = modelMapper;
}
UserDTO convertUserToDTO(account.User user) {
// here we make use of the 3rd party library to transform a User into a UserDTO
return modelMapper.map(user, UserDTO.class);
}
}
我正在尝试使用它:
@RestController
public class AccountController {
@PostMapping("/api/auth/signup")
public ResponseEntity<UserDTO> postAuthSignUp(@RequestBody account.User user, @Autowired DTOmapper dTOmapper) {
if(user.email().endsWith("@acme.com")
) {
return ResponseEntity.ok().contentType(MediaType.APPLICATION_JSON).body( dTOmapper.convertUserToDTO(user) );
}else{
return ResponseEntity.badRequest().build();
}
}
}
我明白了
java.lang.NullPointerException: Cannot invoke "org.modelmapper.ModelMapper.map(Object, java.lang.Class)" because "this.modelMapper" is null
at account.DTOmapper.convertUserToDTO(DTOmapper.java:12) ~[classes/:an]
为什么以及如何解决?
用户是一条记录
public record User(String name, String lastname, String email, String password) {
}
您可能忘记将“@Autowired”放入“@Component”的类构造函数中。
@Autowired
public DTOmapper(ModelMapper modelMapper) {
this.modelMapper = modelMapper;
}
您可以在以下链接中看到解释:https://www.baeldung.com/constructor-injection-in-spring