Hola apreciaría mucho su ayuda para encontrar la traza de este error, les comparto el código.
DTO: DatosRegistrarUsuario.java
package com.d2mp.foro.dto.usuarios;
import jakarta.validation.constraints.NotBlank;
public record DatosRegistrarUsuario(
@NotBlank String nombre,
@NotBlank String email,
String contrasena) { }
Clase: Usuario.java
@Entity
@Table(name = "usuarios")
@NoArgsConstructor
@AllArgsConstructor
@Getter
@EqualsAndHashCode(of = "id")
@JsonIgnoreProperties(ignoreUnknown = true)
public class Usuario {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nombre;
private String email;
private String contrasena;
@Enumerated(value = EnumType.STRING)
private Perfil perfil;
private Boolean activo;
@OneToMany(mappedBy = "autor", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Topico> topicos;
public Usuario(DatosRegistrarUsuario datosRegistrarUsuario) {
this.nombre = datosRegistrarUsuario.nombre();
this.email = datosRegistrarUsuario.email();
this.contrasena = datosRegistrarUsuario.contrasena();
this.perfil = Perfil.ESTUDIANTE;
this.activo = true;
this.topicos = new ArrayList<>();
}
Repository: UsuarioRepository.java
@Repository
public interface UsuarioRepository extends JpaRepository<Usuario, Long> {
Optional<Usuario> findOptionalByEmail(String email);
}
Service: UsuariosService.java
@Service
public class UsuariosService {
@Autowired
private UsuarioRepository usuarioRepository;
public boolean existeUsuario(DatosRegistrarUsuario datosRegistrarUsuario){
return usuarioRepository.findOptionalByEmail(datosRegistrarUsuario.email()).isPresent();
}
public void registrarUsuario(DatosRegistrarUsuario datosRegistrarUsuario){
if(this.existeUsuario(datosRegistrarUsuario))
System.out.println("El Usuario ya está registrado");
else usuarioRepository.save(new Usuario(datosRegistrarUsuario));
}
Controller: controlUsuarios.java
@RestController
@RequestMapping("/usuarios")
public class controlUsuarios {
@Autowired
private UsuariosService usuariosService;
@PostMapping
private void registrarUsuario(@RequestBody @Valid DatosRegistrarUsuario datosRegistrarUsuario){
usuariosService.registrarUsuario(datosRegistrarUsuario);
}
En la linea 9 de controlUsuarios.java usuariosService.registrarUsuario(datosRegistrarUsuario); me esta retornando el error: this.usuariosService is null, entonces no envía los parametros a la clase servicio. Apreciaría mucho su ayuda