Spring boot Annotations
Tags: springboot, programming, java, developer
Published: 2024-01-29 10:06:43


## 📜 A

- ActiveProfiles("test"): sobrescreve as propriedades definidas no arquivo application.properties ao executar os testes, usando o perfil "test".
- AfterAll: indica que o método será executado depois de todos os testes em uma classe de teste.
- AfterEach: indica que o método será executado depois de cada teste em uma classe de teste.
- AllArgsConstructor: gera automaticamente um construtor com todos os atributos da classe.
- Autowired: delega ao Spring a injeção de dependência e inicialização do objeto.
- AutoConfigureMockMvc: injeta o objeto MockMvc no contexto da aplicação para testes de integração.
- AutoConfigureJsonTesters: habilita e configura automaticamente os testadores de JSON para os testes.

## 📜 B

- Bean: indica que o método retorna um objeto gerenciado pelo Spring e que deve ser registrado como um bean.
- BeforeAll: indica que o método será executado antes de todos os testes em uma classe de teste.
- BeforeEach: indica que o método será executado antes de cada teste em uma classe de teste.

## 📜 C

- Captor: captura argumentos de um método para uso em testes.
- Cacheable: permite que o resultado de um método seja armazenado em cache pelo Spring para evitar a execução repetida do método com os mesmos parâmetros.
- CircuitBreaker: habilita o padrão de circuit breaker em um método de um aplicativo Spring.
- CPF: anotação que valida se um valor numérico passado corresponde a um número de CPF válido.
- CollectionTable: usada para mapear uma tabela de coleção em uma entidade.
- Column: especifica o mapeamento entre um atributo de entidade básico e a coluna correspondente na tabela de banco de dados.
- Component: é um estereótipo genérico para qualquer componente gerenciado pelo Spring.
- Configuration: indica que a classe é uma classe de configuração do Spring que define beans e configurações adicionais.
- ConfigurationProperties: usada para mapear um grupo de propriedades em uma classe.
- ConvertGroup(from = Default.class, to = ValidationGroups.{parameter}.class): converte de um "grupo de validação" para outro.
- ControllerAdvice: permite manipular exceções globalmente em um aplicativo Spring.
- CreatedDate: recurso de auditoria fornecido pelo Spring Data JPA que rastreia a data de criação de uma entidade.
- CreationTimestamp: registra automaticamente a data e hora em que uma entidade é criada no banco de dados.
- CrossOrigin: permite a comunicação entre domínios para métodos manipuladores de solicitações.

## 📜 D

- Data: Gera o código padronizado (getters, setters, toString apropriado, equals e implementações hashCode) para os campos de uma classe.
- DataJpaTest: Usada para testar uma interface Repository em um ambiente de teste.
- DisplayName("String"): Usada para fornecer um nome personalizado para a classe de teste ou método de teste.
- DeleteMapping: Usada para mapear solicitações HTTP DELETE para métodos manipuladores específicos.
- DecimalMin: Especifica que a propriedade decorada com essa anotação deve ter um valor maior ou igual ao mínimo especificado.
- DisplayName(): Nomeia um teste.
- DisableIfEnvironmentVariable(): Executa o método se as variáveis de ambiente fornecidas forem falsas.

## 📜 E

- EqualsAndHashCode: Gera automaticamente os métodos equals e hashCode para os campos do objeto.
- Embeddable: Especifica que um tipo é incorporável e será gerenciado pela entidade proprietária.
- Embedded: Especifica que um determinado atributo de entidade representa um tipo incorporável.
- EmbeddedId: Especifica que o identificador de entidade é um tipo incorporável.
- EnableFeignClients: Habilita o uso do Feign na aplicação.
- EnableCaching: Ativa o cache na aplicação.
- EnableFeignClients: habilita o processo de criação automática de clientes Feign a partir das interfaces marcadas com FeignClient.
- EnableWebSecurity: Habilita recursos de segurança em uma aplicação.
- EnableGlobalMethodSecurity: Habilita o uso de anotações com regras de segurança.
- EnableR2dbcAuditing: Configura o mecanismo de auditoria no contexto do Spring para uso com R2DBC.
- Enumerated(EnumType.STRING): Especifica que a representação de uma enumeração será armazenada como uma String na coluna correspondente na tabela do banco de dados.
- ElementCollection: Especifica que um campo representa uma coleção de elementos embutidos ou básicos.
- ElementCollection(fetch = FetchType.EAGER): Especifica que a coleção de elementos embutidos ou básicos deve ser buscada imediatamente.
- Entity: Especifica que a classe anotada representa uma entidade.
- Email: Verifica se o valor de um campo possui as características de um endereço de e-mail.
- EnableIfEnvironmentVariable(): Executa o método se as variáveis de ambiente fornecidas forem verdadeiras.
- EnableOnOs(): Executa o método se os parâmetros informados relacionados ao sistema operacional forem verdadeiros.
- EnableOnJre(): Executa o método se os parâmetros informados relacionados à JRE forem verdadeiros.
- EnableForJreRange(): Executa o método se os parâmetros informados relacionados às versões da JRE forem verdadeiros.
- EnableEurekaServer: permite que o aplicativo funcione como um servidor de registro para outros serviços.
- EnableEurekaClient: permite que o aplicativo se registre em um servidor Eureka e utilize a descoberta de serviços fornecida pelo Eureka.
- ExtendWith(MockitoExtension.class): Permite o uso do Mockito como uma extensão para o framework de teste, fornecendo recursos adicionais para criação e uso de objetos simulados (mocks) durante os testes.
- ExceptionHandler: Permite que um método trate uma exceção específica quando ela é lançada.

## 📜 F

- FeignClient: Injeta o cliente no contexto do Spring para facilitar a comunicação com serviços HTTP.
- Future: Define que a variável só pode receber uma data futura.

## 📜 G

- GeneratedValue(GenerationType.AUTO): Estratégia padrão para geração de valores de identificador. A JPA escolhe a estratégia mais apropriada com base no banco de dados configurado para a aplicação.
- GeneratedValue(GenerationType.SEQUENCE): Utiliza uma sequência no banco de dados para gerar os valores dos identificadores. É necessário adicionar a anotação SequenceGenerator para configurar a sequência.
- GeneratedValue(GenerationType.IDENTITY): Usada quando o banco de dados suporta colunas autoincrementais, como AUTO_INCREMENT no MySQL ou IDENTITY no SQL Server.
- GeneratedValue(GenerationType.UUID): Indica que o valor do identificador único da entidade será gerado pelo provedor de persistência usando a estratégia UUID.
- GeneratedValue(GenerationType.TABLE): Utiliza uma tabela especial no banco de dados para gerar os valores dos identificadores. É necessário adicionar a anotação TableGenerator para configurar a tabela.
- GetMapping: Mapeia solicitações HTTP GET para métodos manipuladores específicos.
- Getter: Cria automaticamente os métodos getter para todos os atributos da classe usando o Lombok.

## 📜 I

- Id: Especifica o identificador da entidade. Uma entidade sempre deve ter um atributo identificador.
- InjectMocks: Cria e injeta instâncias simuladas para serem usadas em testes com o Mockito.

## 📜 J

- JsonAlias: Mapeia apelidos alternativos para os campos recebidos em JSON.
- JsonFormat(pattern = "dd/MM/yyyy HH:mm"): Especifica o formato esperado para a data/hora ao serializar ou desserializar em JSON.
- JsonInclude(Include.NON_NULL): Inclui apenas as propriedades não nulas ao serializar em JSON.
- JsonProperty(access = READ_ONLY): Indica que o parâmetro é somente leitura.
- JsonIgnore: Marca uma propriedade para ser ignorada durante a serialização/desserialização JSON no nível do campo.
- JsonIgnoreProperties: Marca uma propriedade ou um grupo de propriedades para serem ignoradas durante a serialização/desserialização JSON.
- JoinColumn: Define o mapeamento físico no lado proprietário em um relacionamento um-para-muitos/muitos-para-um.
- JoinTable: Define o nome de uma tabela intermediária em um relacionamento muitos-para-muitos.

## 📜 L

- LastModifiedDate: Utilizada para rastrear quando a entidade foi modificada pela última vez.

## 📜 M

- Min: Usada para aplicar validações de valor mínimo a propriedades de um objeto.
- Modifying: Informa ao Spring Data que a consulta anotada com @Query é uma operação de escrita (atualização, exclusão, etc.) e não uma consulta de leitura.
- Modifying(clearAutomatically = true): indica ao Spring Data JPA que a consulta resultará em uma modificação no banco de dados e que o contexto de persistência deve ser limpo automaticamente após a execução da consulta.
- Mock: Cria um objeto simulado (mock) usado para testes com o Mockito.
- MockBean: Cria um objeto simulado (mock) de uma classe ou interface e o adiciona ao contexto de aplicação para uso em testes.
- ManyToOne: Especifica um relacionamento de banco de dados muitos-para-um.
- ManyToMany: Especifica um relacionamento de banco de dados muitos-para-muitos, onde muitos registros de uma entidade estão relacionados com muitos registros de outra entidade.
- MappedSuperclass: Usada em classes que contêm campos e métodos que devem ser herdados por entidades filhas.

## 📜 N

- NotBlank: Valida que um atributo do tipo String não pode ser nulo e nem vazio.
- NotNull: Checa se o valor anotado não é nulo (null).
- NoArgsConstructor: Gera um construtor sem parâmetros automaticamente.
- NotEmpty: Valida que a propriedade não é nula nem vazia. Pode ser utilizada com String, Collection, Map ou array.

## 📜 O

- Order: Define a ordem de execução de um componente ou método dentro de um sistema.
- OneToMany: Especifica um relacionamento de banco de dados um-para-muitos.
- OneToOne: Especifica um relacionamento de banco de dados um-para-um.

## 📜 P

- PathVariable: Indica que o valor da variável virá de uma informação presente na rota.
- PageableDefault: Permite informar parâmetros padrão de paginação e ordenação.
- Param: Indica que o parâmetro é um parâmetro de um método.
- PatchMapping: Mapeia solicitações HTTP PATCH para métodos manipuladores específicos.
- Pattern: Checa se a propriedade obedece a uma expressão regular.
- Past: Valida se o valor da data está no passado.
- PostMapping: Mapeia solicitações HTTP POST para métodos manipuladores específicos.
- Positive: Valida se o valor numérico passado é positivo.
- PutMapping: Mapeia solicitações HTTP PUT para métodos manipuladores específicos.
- PreAuthorize: Verifica a expressão dada antes de executar o método.
- Primary: Usada quando existem dois métodos anotados com Bean que retornam o mesmo tipo de objeto. Indica qual deles será injetado por padrão quando for solicitado.
- Profile: Indica em qual perfil (profile) o bean deve ser carregado.

## 📜 Q

- Query: Permite criar instruções SQL personalizadas e expor essas instruções como métodos DAO.

## 📜 R

- RestController: Marca a classe como um controlador no qual cada método retorna um objeto de domínio em vez de uma visão.
- RestControllerAdvice: Torna uma classe um componente especializado em tratar exceções e o retorno dos métodos dessa classe deve ser inserido no corpo da resposta HTTP e convertido para JSON.
- Repository: Define uma classe como pertencente à camada de persistência (repository).
- RequestBody: Indica que o valor do objeto virá do corpo da requisição.
- RequestMapping: Mapeia solicitações da web para classes manipuladoras específicas e métodos manipuladores.
- RequestParam: Mapeia os parâmetros HTTP para argumentos de métodos.
- RequiredArgsConstructor: Cria um construtor com todos os atributos finais da classe automaticamente.
- ResponseBody: Transforma um objeto Java retornado pelo controller em uma representação de recurso solicitada por um cliente REST.
- ResponseStatus(HttpStatus.OK): Indica que quando a requisição é bem-sucedida, o código de status HTTP retornado deve ser "200 OK".
- ResponseStatus(HttpStatus.CREATED): Retorna um status code que indica que algum recurso foi criado na aplicação.
- ResponseStatus(HttpStatus.NO_CONTENT): Retorna um status code que indica que a solicitação HTTP foi concluída com êxito e não há corpo de mensagem.

## 📜 S

- Service: Marca uma classe Java como um serviço que executa alguma lógica de negócio.
- SequenceGenerator: Usada para especificar a sequência de banco de dados usada pelo gerador de identificadores da entidade atualmente anotada.
- Setter: Cria métodos de configuração (setters) para todos os atributos da classe automaticamente usando o Lombok.
- Size: Verifica se a quantidade de elementos está entre um tamanho mínimo e máximo especificado, aplicável a tipos como Strings, Collections, Maps e arrays.
- Spy: Cria um "espião" de um objeto, permitindo a verificação de interações com o objeto durante testes.
- SecurityRequirement(name = "bearer-key"): Especifica um requisito de segurança (como autenticação do tipo Bearer token) para uma operação.
- SpringBootTest: Cria o contexto da aplicação Spring para fins de teste, permitindo a injeção de dependências e outras funcionalidades do framework.
- SpringBootApplication: Indica que a classe principal é uma aplicação Spring Boot.

## 📜 T

- Table: Especifica o nome da tabela principal associada à entidade anotada atualmente.
- Test: Anotação que define um método como um teste.
- TestMethodOrder(MethodOrderer.OrderAnnotation.class): Executa os testes em ordem especificada pela anotação Order().
- TestMethodOrder(MethodOrderer.MethodName.class): Executa os testes em ordem alfabética pelo nome do método.
- TestMethodOrder(MethodOrderer.Random.class): Executa os testes em ordem aleatória.
- TestMethodOrder(MethodOrderer.DisplayName.class): Executa os testes em ordem especificada pela anotação DisplayName().
- Transactional: Utilizada nos métodos que requerem transações, garantindo que as operações sejam executadas atomicamente.

## 📜 V

- Valid: Indica que o valor do objeto virá do corpo da requisição e precisa ser validado de acordo com as regras de validação definidas.
- Value: Fornece uma maneira de injetar valores de propriedades em componentes.

## 📜 W

- WithMockUser: Permite a execução de testes usando um usuário fictício autenticado.