(Spring boot) Inserir objeto em uma lista - Ajuda (Iniciante)

Boa noite galera .

Peço desculpas primeiramente pois sou novo no fórum e tbm em desenvolvimento em Java Web.

Me chamo Paulo e estou com o seguinte problema e precisando de ajuda para dar continuidade os estudos.

O cenário é o seguinte: Tenho duas entidades.

A primeira entidade chamada Pessoa e a segunda Endereço.

No relacionamento entre essas entidades no caso seria : uma pessoa para um ou muitos endereços.

Então construí minhas classes Modelo, repository, service e controller com os metodos de gravação edição localização etc.

A minha duvida é a seguinte.

Como faço para inserir o meu objeto endereço na lista de endereço da pessoa na pagina html que tenho.
Pois as funções de insert e update para Pessoa está funcionando mas não consigo adicionar o endereço.

Abaixo segue código.

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Id")
private Integer id;

@Column(name = "Codigo")
private String codigo;

@Column(name = "Nome")
private String nome;

@Column(name = "Apelido")
private String apelido;

@Column(name = "Cpf_cnpj")
private String cpf_cnpj;

@OneToMany(mappedBy = "pessoa", cascade = CascadeType.ALL)
private List<Endereco> enderecos = new ArrayList<Endereco>();

@Column(name = "Tipo")
private String tipo;

@Entity
@Table(name = “Endereco”, schema = “dbo”)
public class Endereco {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Id")
private Integer id;

@ManyToOne
@JoinColumn(name = "Pessoa_Id")
private Pessoa pessoa;

@Column(name = "Numero")
private String numero;

@ManyToOne
@JoinColumn(name = "tipo_logradouro_id")
private TipoLogradouro tipo;

@Column(name = "Nome")
private String nome;

@ManyToOne
@JoinColumn(name = "Bairro_Id")
private Bairro bairro;

@ManyToOne
@JoinColumn(name = "Cidade_Id")
private Cidade cidade;

DTO
public class PessoaCadastro {

private Pessoa pessoa;

private Endereco endereco;

private List<Bairro> bairros = new ArrayList<Bairro>();

private List<Cidade> cidades =  new ArrayList<Cidade>();

private List<TipoLogradouro> logradouros = new ArrayList<TipoLogradouro>();

Controller
public ModelAndView cadastro(PessoaCadastro formPessoa) {
return new ModelAndView(“cadastro-pessoa”, “formPessoa”, formPessoa);

@RequestMapping(value = "/cadastro-pessoa", method = RequestMethod.GET)
public ModelAndView novo() {

	PessoaCadastro pessoa = new PessoaCadastro();

	pessoa.setPessoa(new Pessoa());

	pessoa.setEndereco(new Endereco());

	pessoa.setLogradouros(serLogradouro.findAll());

	pessoa.setBairros((List<Bairro>) serBairro.findAll());

	pessoa.setCidades((List<Cidade>) serCidade.finfAll());

	return cadastro(pessoa);
}

@RequestMapping(value = "/salvar-pessoa")
public String saveOrUpdate(PessoaCadastro pessoa) {
	service.saveOrUpdate(pessoa.getPessoa());
	return "redirect:/lista-pessoa";
}

@RequestMapping(value = "/adionar-endereco", method = RequestMethod.GET)
public ModelAndView AdionarEndereco(PessoaCadastro pessoa) {
	pessoa.addEnderecoPessoa(pessoa.getEndereco());
	return cadastro(pessoa);

} 
   Esse ultimo método estou chamando na pagina de cadastro de pessoa onde preencho as informações de endereço clico no botão que irá acionar a url /adionar-endereco para adicionar em uma lista de endereço da pessoa. Mas não esta funcinando pois o objeto esta nulo. Não sei como faz essa rotina. 

Mas o cenário seria o mesmo no caso de Orçamento e seus itens. A pergunta é como faço para adicionar objeto em uma lista?

Exe: Orcamento e itens de orcamento. Onde seleciono produto e vou guardando na lista até o momento de salvar e persistir no bando de dados .

Desculpem mais uma vez, não sei se me fiz entender.

Desde já agradeço.