Entrevistas – Desenvolvedor Java – Spring #7

O Spring Framework tem uma variedade de projetos para resolver ou facilitar a solução de diversos problemas e se tornou uma das ferramentas mais populares e utilizadas por desenvolvedores e empresas. Neste post irei descrever as minhas respostas para as perguntas que costumo fazer sobre o tema “Spring” mencionado no post #0 da série.

Motivação

Após o lançamento do Spring Boot, Spring vem para se tornar o bootstrap mais simples que já vi até agora e se tornou a grande alternativa para construir aplicações Java Web, mais conhecidas como J2EE ou JEE. Mesmo antes disso, o framework já se apresentava mais simples e barato de implantar em empresas. A partir disso, conhecer as ferramentas e projetos que esse framework nos fornece tem se tornado cada vez mais um requisito para desenvolvedores.

Conhecer as especificações Java Enterprise Edition também pode contribuir para entender como o Spring trabalha em alguns de seus projetos e, geralmente, essas são as duas linhas de estudo mais comuns para atuar com aplicações web e a plataforma Java.

Perguntas

  • Qual é a diferença entre Service e Component?

Resposta: Ambos são estereótipos do Spring, mas Service é uma especialização de Component e trás a ideia de ser uma sublayer de Model, parte do padrão de arquitetura MVC e definida por Eric Evans em Domain-Driven Design, para contribuir em validações de negócio que geralmente não pertencem a um domínio específico e não devem manter estado mutável encapsulado.

  • Qual é o ciclo de vida padrão de um componente do Spring?

Resposta: Por padrão todos os componentes são Singleton e criados para cada container IoC do Spring. Por padrão, os Beans são validados e criados no momento em que o contexto da aplicação é iniciado e destruídos no processo de encerrar a aplicação.

  • Qual é a diferença entre RestController e Controller?

Resposta: RestController é uma especialização de Controller e contém @ResponseBody como diferencial, que modifica o tipo de retorno dos Controllers para o padrão REST em JSON. Além disso, o @RestController dá mais significado a um Controller e poderá ser tratado com semânticas diferentes internamente pelo Spring MVC.

  • Como funciona o Transactional do Spring Data JPA?

Resposta: A anotação @Transactional representa uma transação em bancos de dados relacionais no caso do Spring Data JPA, pode definir diferentes propagações, isolamento, timeout, rollback, qual será o TransactionManager e se será uma transação readOnly. As propagações podem ser mandatory, nested, never, not supported, required (padrão), requires new e supports, os isolamentos podem ser default, read commited, read uncommited, repeatable read e serializable, rollbacks acontecem por padrão apenas para RuntimeException, em caso de check exceptions deve ser definido explicitamente.

Com essas perguntas consigo ter uma noção do conhecimento em Spring Core, Spring MVC e Spring Data da pessoa entrevistada. Também já me deparei com cenários em que era válido perguntar sobre Spring Boot, Spring Testing e Spring Batch, mas os primeiros são os mais requisitados em minha experiência e, apesar de o Spring Boot ser o mais utilizado para fazer o bootstrap de projetos atualmente, seu aprendizado e uso costuma ser bem mais simples do que o Core e demais projetos.

Para saber mais

Gostou? Foi útil? Concorda ou discorda de algum ponto? Comenta ai e vamos aprender mais juntos.

Espero que te ajude 😉

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s