Como fazer um endpoint com retorno

Sou iniciante em java, spring , jpa e hibernate, estou fazendo um projeto que contém cadastro de usuários, cadastro de endereço e a listagem dos endereços de um usuário específico.
A minha dificuldade está em criar um endpoint que retorne um usuário com a lista de todos seus endereços cadastrados.
alguém pode me ajudar?

O que você já fez até agora?

A criação do endpoint spring em si não eh difícil. Basta criar um método que recebe os parâmetros necessários para a consulta e retornar o resultado desejado, algo assim:

public List<Usuario> recuperarUsuariosComSeusEnderecos() {
    List<Usuario> usuarios = usuarioService.recuperarTodos();
    return usuarios;
}

Com isso, basta adicionar a anotação @GetMapping para transformar esse método num endpoint http.

Uma outra forma de retorno (que é a que prefiro usar), é retornar uma instância de ResponseEntity, pois te dá mais flexibilidade de manipular o retorno HTTP para casos específicos. Veja: ResponseEntity.

Eu tenho uma chave estrangeira chamada usuário_id na tabela endereços, pois quero puxa apenas um usuário especifico através dessa chave , (não sei se essa lógica tá certa) .

Model de endereço

@Entity
@Table(name="enderecos")
public class Endereco {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column( nullable=false)
    @Size(max = 150)
    private String lograudoro;

    @Column( nullable=false)

    private int numero;

    @Column( nullable=false)
    @Size(max = 10)
    private String complemento;

    @Column( nullable=false)
    @Size(max = 50)
    private String bairro;

    @Column( nullable=false)
    @Size(max = 50)
    private String cidade;

    @Column( nullable=false)
    @Size(max = 50)
    private String estado;

    @Column( nullable=false)
    @Size(max = 10)
    private String cep;

    @ManyToOne
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JoinColumn(name = "usuario_id")
    private Usuario usuario;

Model Usuario

@Entity
@Table(name = "usuarios")
public class Usuario {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) // forma nativa do mysql
    private long id;

    @Column( nullable=false)
    @Size(max = 100)
    private String nome;

    @Column(unique=true, nullable=false)
    @Size(max = 100)
    private String email;

    @Column(unique=true, nullable=false)
    @Size(max = 14)
    private String cpf;

    @Column(name = "data_de_nascimento", nullable=false)
    @Size(max = 15)
    private String dataDeNascimento;

    @OneToMany(mappedBy = "usuario")
    private List<Endereco> enderecos;

O que tentei fazer

EnderecoController ( tentando formular uma lógica para busca um usuário especifico com seus endereços)

@GetMapping("/endereco/{id}")
List<Endereco> listaUsuarioUnico(@PathVariable(value="usuario_id") long usuarioid){
     return enderecoRepository.findById(usuarioid);
}
@GetMapping("/endereco/{id}")
List<Endereco> listaUsuarioUnico(@PathVariable(value="usuario_id") long usuarioid){
     return enderecoRepository.findById(usuarioid);
}

Se a URL do endpoint é /endereco/{id}, o parâmetro @PathVariable deve ter o mesmo nome do parâmetro na URL, porém, está diferente: usuario_id. O correto é: @PathVariable(value="id").