Não tem curso mostrando, mas aqui vai um exemplo:
Controller:
@PostMapping
@Transactional
public ResponseEntity<DadosUsuario> cadastrar(@RequestBody @Valid DadosCadastroUsuario dados) {
var usuario = this.service.cadastrar(dados);
return ResponseEntity.ok(usuario);
}
Service:
@Autowired
private UsuarioRepository repository;
@Autowired
private PasswordEncoder passwordEncoder;
public DadosUsuario cadastrar(DadosCadastroUsuario dados) {
var emailJaCadastrado = this.repository.existsByEmail(dados.email());
if (emailJaCadastrado) {
throw new ValidacaoException("Email já cadastrado para outro usuário!");
}
var senhaBCrypt = passwordEncoder.encode(dados.senha());
var usuario = new Usuario(dados, senhaBCrypt);
this.repository.save(usuario);
return new DadosUsuario(usuario);
}
Sobre a integração com o frontend, o front é que vai se integrar com o backend, então o trabalho "maior" será no frontend mesmo. A única coisa que precisa fazer no backend é configurar o CORS, para que o frontend consiga disparar requisição para o Backend. Aqui nesse repositório tem um exemplo de configuração do CORS com Spring Boot: https://github.com/rcaneppele/exemplo-clinica-spring-security