top of page
Buscar
Foto do escritorandre-masiero

Entendendo as anotações básicas do Spring

@Configuration

Essa é uma anotação a nível de Classe que diz para o Container de Inversão de Controle do Spring que essa classe é a fonte de beans (dependencias requeridas por outras classes no projeto).


@Bean

Essa anotação é no nível do Método/Função e indica que esse método/função cria e retorna um “bean” que pode ser usado como dependencia em outras classes do projeto. E vale lembrar que temos dois tipos de injeção de dependencia no Spring: por tipo (Default) ou por nome. Por padrão a criação e exposição dos beans será baseado no seu tipo.


@Autowired

Então entramos com a anotação em nível dos campos ou do construtor da classe que vai dizer o que você irá dizer qual bean irá ser dependencia da sua classe. Imagine o consumo do exemplo acima?

A anotação Autowired faz a injeção via “Setter”, e por mais que seja amplamente utilizada, você deveria optar fazer isso via injeção no construtor da classe, e com isso você garante que tudo que a classe precisa será passado.


@Component

Essa é mais uma anotação a nível de classe para indicar que essa classe deverá ser exposta como um bean e ela poderá ser injetada nos consumidores que vão precisar dela.


@Service

Anotação de nível de classe que indica que a classe que carrega essa anotação precisará ser exposta como um bean e injetada nos consumidores que indicaram que precisam (semelhante a @Component em funcionalidade, mas a anotação @Service é usada para classes que atuam como classes de serviço contendo lógica de negócios, enquanto @Component é mais útil para outros beans genéricos).


@RestController/@Controller

Anotação de nível de classe que indica que a classe que carrega essa anotação precisará ser exposta como um bean de controlador e injetada nos consumidores que indicaram que precisam dele. Os controladores que carregam essa anotação fornecem suporte para especificar coisas específicas de Controller, como o caminho, o verbo HTTP, o corpo da solicitação, o parâmetro de consulta, o parâmetro do caminho, os tipos de conteúdo aceitos, etc. Se liga no exemplo:

A principal diferença está que com o @RestController você pode devolver o dado diretamente, e com a @Controller você irá precisar de um view para conter a resposta.


@RequestMapping

Geralmente utilizada em cima dos métodos de uma classe anotada com @Controller. Serve para você colocar os endereços da sua aplicação que, quando acessados por algum cliente, deverão ser direcionados para o determinado método.


@ResponseBody

Utilizada em métodos anotados com @RequestMapping para indicar que o retorno do método deve ser automaticamente escrito na resposta para o cliente. Muito comum quando queremos retornar JSON ou XML em função de algum objeto da aplicação.


@Repository

Associada com classes que isolam o acesso aos dados da sua aplicação. Comumente associada a DAO’s.


@ComponentScan

Em geral você a usa em classes de configuração(@Configuration) indicando quais pacotes ou classes devem ser scaneadas pelo Spring para que essa configuração funcione.


@Scope

Annotation utilizada para marcar o tempo de vida de um objeto gerenciado pelo container. Pode ser utilizada em classes anotadas com @Component, ou alguma de suas derivações. Além disso também pode usada em métodos anotados com @Bean. Quando você não utiliza nenhuma, o escopo default do objeto é o de aplicação, o que significa que vai existir apenas uma instância dele durante a execução do programa. Você alterar isso, anotando o local e usando alguma das constantes que existem na classe ConfigurableBeanFactory ou WebApplicationContext.


@Primary

Caso você tenha dois métodos anotados com @Bean e com ambos retornando o mesmo tipo de objeto, como o Spring vai saber qual dos dois injetar por default em algum ponto da sua aplicação? É para isso que serve a annotation @Primary. Indica qual é a opção padrão de injeção. Caso você não queira usar a padrão, pode recorrer a annotation @Qualifier.


@Profile

Indica em qual profile tal bean deve ser carregado. Muito comum quando você tem classes que só devem ser carregadas em ambiente de dev ou de produção. Essa eu utilizo bastante e acho uma ideia simples, mas super relevante dentro do Spring.


@SpringBootApplication

Para quem usa Spring Boot, essa é uma das primeiras que você utiliza. Ela engloba a @Component, @ComponentScan e mais uma chamada @EnableAutoConfiguration, utilizada pelo Spring Boot para tentar adivinhar as configurações necessárias para rodar o seu projeto.


@EnableAsync

Essa aqui não é tão comum, mas muitas vezes você precisa ações no sistema em background(outra thread). Essa annotation deve ser colocada em alguma classe marcada com @Configuration, para que o Spring habilite o suporte a execução assíncrona.


@Async

Dado que seu projeto habilitou o uso de execução de métodos assíncronos com a @EnableAsync, você pode marcar qualquer método de um bean gerenciado do projeto com essa annotation. Quando tal método for invocado, o Spring vai garantir que a execução dele será em outra thread.


Bom, acredito ser isso aí

10 visualizações0 comentário

Posts recentes

Ver tudo

Comentários


bottom of page