Explicando — stereotype do Spring

Carly Christian
3 min readMay 19, 2020

--

Bem, para falar de stereotypes primeiro precisamos entender um pouquinho do conceito de DI (injeção de dependência). O foco aqui não é falar sobre DI mas precisamos saber que o spring trabalha com IoC/DI e que isso fica “transparente” para o desenvolvedor, tirando dele a preocupação de gerenciar as instâncias e o ciclo de vida de seus objetos complexos que serão mapeados como spring beans, ficando a cargo do spring por meio do spring ApplicationContext todo esse gerenciamento. O que são spring beans ? De forma simples, são objetos que delegamos a responsabilidade do seu gerenciamento de instância e ciclo de vida para o spring e isso pode ser feito por configuração XML ou Anotações. Assim o spring aumenta produtividade e permite ao desenvolvedor se preocupa com o uso dos objetos complexos ficando a cargo do framework o gerenciamento deles. Agora que sabemos em teoria o que esta por trás, vamos para o foco do artigo.

Sabemos que o spring gerencia a instância e ciclo de vida dos objetos complexos, mas como ele faz isso ? Como disse acima, por XML ou Anotações apartir do Spring 2.5. O spring procura por uma anotação chamada “@Component” para gerenciar, bastando anotar os objetos que queremos que o spring fique responsável com ela. Mas existem varias anotações para tratarmos nossos objetos complexos e cada uma é mais apropriada para cada responsabilidade de nossos objetos. Vamos ver abaixo a lista dessas anotações.

“@Component”

É a base das anotações dos stereotypes, todas as especializações dos stereotypes tem essa anotação e por isso são gerenciados pelo spring. Isso significa que dizemos que a classe é um spring bean e que deve ser gerenciada pelo Spring ApplicationContext. Utilizamos para objetos complexos cuja a especificação do spring não prevê um stereotype específico ou para criar nosso próprio stereotype. (sim, podemos criar e é indicado em alguns casos para ganho de manutembilidade e padronização)

“@Controller”

É utilizado para anotar os nossos controladores. Mas além do gerenciamento de instância e ciclo de vida pelo Spring ApplicationContext, dizemos também que é um controlador na configuração do MVC e são nos controladores que o DispatcherServlet procurará os seus “@xxxxMapping”, ou seja, se você anotar o seu controlador com “@Component” o Spring vai entender que ele é um spring Bean mas não irá mapear seus “@xxxxMapping”.

“@Repository”

Utilizamos para mapear nossos objetos complexos da camada de persistência. Além de dizermos que é um spring Bean, ela também captura exceções específicas. (Aqui cabe um detalhamento maior, podemos configurar o PersistenceExceptionTranslationPostProcessor como bean para isso, mas não vou entrar em muitos detalhes, pois o foco é que entendamos as diferenças).

“@Service”

Utilizamos para mapear nossos objetos que contem regras de negócio, processos e etc. Lembre-se escrevemos para outras pessoas e não para máquinas. stereotypes também tornam nossos códigos mais claros e limpos, otimizando ganhos de manutembilidade e produtividade. Uma classe anotada com “@component” iria obrigar um desenvolvedor a recorrer ao nome da classe, pacote ou ler o código para saber de qual camada se trata e qual a finalidade da classe, ou seja, utilizar “@Component” existindo uma especialização para a classe, também pode impactar em evoluções futuras.

Então sabemos que as anotações “@Service”, “@Repository”, “@Controller” todas possuem em sua definição a anotação “@Component” e é essa anotação a qual o spring procura para entender que se trata de um spring Bean e assim gerenciar pelo Spring ApplicationContext. Entendemos também as peculiaridades de cada anotação e que a semântica das especializações são relevantes por questões de manutembilidade, boas práticas e código limpo.

É isso, aqui ta o link da documentação stereotype spring, espero que possa ter ajudado e fiquem a vontade para feedbacks. Aqui o importante é dividir, porquê quando dividimos conhecimento, nós multiplicamos.

flw vlw o/

--

--

Carly Christian
Carly Christian

Written by Carly Christian

Oi, eu sou o carly. Gosto de falar sobre varios assuntos e visões que tenho sobre o mundo, é isto.

No responses yet