Capítulo 5: Dicionário Completo de Anotações (A-Z)
Referência rápida de todas as anotações do Spring Boot, organizadas em ordem alfabética. Para exemplos de código detalhados, consulte os capítulos 1 a 4.
A
| Anotação | Descrição |
|---|---|
| @ActiveProfiles | Ativa perfis específicos do Spring para testes unitários. Permite carregar, por exemplo, application-test.yml. |
| @After | (JUnit 4) Executa código após cada método de teste. |
| @AfterClass | (JUnit 4) Executa código após todos os métodos de teste de uma classe. |
| @AfterEach | (JUnit 5) Executa código após cada método de teste. Substitui o @After. |
| @Async | Executa um método de forma assíncrona em uma thread separada. Requer @EnableAsync. |
| @AutoConfigureDataJpa | Configura automaticamente o JPA para um teste unitário. |
| @AutoConfigureJsonTesters | Configura automaticamente as ferramentas de serialização/desserialização JSON para testes. |
| @AutoConfigureMockMvc | Configura automaticamente o objeto MockMvc para um teste unitário. |
| @AutoConfigureWebTestClient | Configura automaticamente o WebTestClient para testes WebFlux. |
| @Autowired | Injeta automaticamente uma dependência (bean Spring) em uma classe. Prefira a injeção por construtor. |
B
| Anotação | Descrição |
|---|---|
| @Bean | Declara um método que retorna um objeto gerenciado pelo container Spring. Usada em classes @Configuration. |
| @Before | (JUnit 4) Executa código antes de cada método de teste. |
| @BeforeClass | (JUnit 4) Executa código antes de todos os métodos de teste de uma classe. |
| @BeforeEach | (JUnit 5) Executa código antes de cada método de teste. Substitui o @Before. |
C
| Anotação | Descrição |
|---|---|
| @Cacheable | Armazena em cache o resultado de um método. As chamadas seguintes retornam o resultado do cache. |
| @CacheConfig | Configura parâmetros de cache (nome, tempo de vida, tamanho máximo) para uma classe inteira. |
| @CacheEvict | Remove uma ou todas as entradas do cache quando o método é chamado. |
| @CachePut | Atualiza o cache com o resultado do método, sem nunca usar o cache existente. |
| @CircuitBreaker | (Spring Cloud) Protege um método contra falhas repetidas, limitando as chamadas quando o serviço está fora. |
| @Column | Configura o mapeamento de uma propriedade JPA para uma coluna no banco de dados (nome, nullable, unique, length). |
| @Component | Marca uma classe como um bean Spring genérico, detectado automaticamente pelo component scan. |
| @ComponentScan | Varre os pacotes para detectar automaticamente classes anotadas com @Component, @Service, @Repository, etc. |
| @Conditional | Condiciona a criação de um bean de acordo com uma condição personalizada. |
| @ConditionalOnClass | Cria um bean apenas se uma classe específica estiver presente no classpath. |
| @ConditionalOnMissingBean | Cria um bean apenas se nenhum outro bean do mesmo tipo já existir. |
| @ConditionalOnProperty | Cria um bean apenas se uma propriedade tiver um determinado valor na configuração. |
| @Configuration | Marca uma classe de configuração Spring contendo métodos @Bean. |
| @ConfigurationProperties | Liga um grupo de propriedades do arquivo de configuração a um objeto Java (ex: app.mail.host). |
| @Controller | Marca uma classe como controlador Spring MVC que retorna views (templates HTML). |
| @ControllerAdvice | Define um conselheiro global para todos os controladores (gestão centralizada de exceções, binding, etc.). |
| @CrossOrigin | Permite requisições HTTP cross-origin (CORS) de domínios específicos ou de todos os domínios. |
D
| Anotação | Descrição |
|---|---|
| @DataJpaTest | Teste especializado que carrega apenas a camada JPA (repositórios, EntityManager, banco em memória). |
| @DeleteMapping | Atalho para @RequestMapping(method = DELETE). Mapeia um método para uma requisição HTTP DELETE. |
| @Disabled | (JUnit 5) Desativa temporariamente um teste unitário sem removê-lo do código. |
E
| Anotação | Descrição |
|---|---|
| @EnableAsync | Ativa a execução assíncrona na aplicação. Necessário para que o @Async funcione. |
| @EnableCaching | Ativa o cache na aplicação. Necessário para que o @Cacheable funcione. |
| @EnableConfigurationProperties | Ativa o binding automático de propriedades de configuração para objetos @ConfigurationProperties. |
| @EnableJms | Ativa o suporte a JMS (Java Message Service) para mensageria na aplicação. |
| @EnableJpaRepositories | Ativa o suporte a repositórios Spring Data JPA. Configurado automaticamente pelo Spring Boot. |
| @EnableScheduling | Ativa o agendamento de tarefas. Necessário para que o @Scheduled funcione. |
| @EnableWebMvc | Ativa a configuração do Spring MVC. Raramente necessário, pois o Spring Boot ativa automaticamente. |
| @EnableWebSecurity | Ativa a configuração personalizada do Spring Security. |
| @EnableMethodSecurity | Ativa a segurança a nível de métodos (@PreAuthorize, @PostAuthorize, @Secured). |
| @Entity | Marca uma classe como entidade JPA, mapeada para uma tabela no banco de dados. |
| @Enumerated | Define como um enum Java é armazenado no banco: STRING (texto) ou ORDINAL (número). |
| @EventListener | Escuta eventos do Spring (inicialização da aplicação, eventos customizados, etc.). |
| @ExceptionHandler | Trata uma exceção específica em um controlador ou @ControllerAdvice. Retorna uma resposta de erro personalizada. |
| @ExtendWith | (JUnit 5) Estende funcionalidades dos testes com extensões (ex: SpringExtension, MockitoExtension). |
F
| Anotação | Descrição |
|---|---|
| @Fallback | (Spring Cloud) Fornece um método de fallback quando um método @CircuitBreaker falha. |
| @FlywayTest | Testa as migrações de banco de dados Flyway em testes de integração. |
| @Formula | (Hibernate) Define uma coluna calculada no SQL, sem coluna física no banco. |
G
| Anotação | Descrição |
|---|---|
| @GeneratedValue | Define a estratégia de geração automática da chave primária (IDENTITY, SEQUENCE, UUID, AUTO). |
| @GetMapping | Atalho para @RequestMapping(method = GET). Mapeia um método para uma requisição HTTP GET. |
I
| Anotação | Descrição |
|---|---|
| @Id | Marca um campo como chave primária de uma entidade JPA. |
| @Import | Importa outras classes de configuração em uma classe @Configuration. |
| @InitBinder | Personaliza o binding de dados entre requisições HTTP e objetos Java (conversão, validação, formatação). |
J
| Anotação | Descrição |
|---|---|
| @JoinColumn | Define a coluna de chave estrangeira para uma relação JPA (@ManyToOne, @OneToOne). |
| @JoinTable | Define a tabela de junção para uma relação @ManyToMany (nome da tabela, colunas de junção). |
| @JmsListener | Define um método que escuta mensagens JMS em uma fila ou tópico. |
| @JsonFormat | Personaliza o formato de serialização JSON (datas, números). Ex: @JsonFormat(pattern = "yyyy-MM-dd"). |
| @JsonIgnore | Exclui uma propriedade da serialização/desserialização JSON. |
| @JsonInclude | Controla quais propriedades são incluídas no JSON (ex: excluir valores nulos). |
| @JsonProperty | Renomeia uma propriedade no JSON. Ex: @JsonProperty("full_name") para um campo fullName. |
| @JsonSubTypes | Define subtipos para desserialização polimórfica JSON. |
| @JsonTest | Teste especializado apenas para serialização/desserialização JSON. |
| @JsonTypeInfo | Adiciona informações de tipo no JSON para permitir desserialização polimórfica. |
| @JsonView | Filtra propriedades JSON conforme a view solicitada (ex: view pública vs view admin). |
L
| Anotação | Descrição |
|---|---|
| @Lazy | Retarda a inicialização de um bean até seu primeiro uso. Melhora o tempo de inicialização. |
| @Lob | Indica um campo do tipo Large Object: CLOB (texto longo) ou BLOB (binário). |
M
| Anotação | Descrição |
|---|---|
| @ManyToMany | Define uma relação muitos-para-muitos entre duas entidades JPA. Usa uma tabela de junção. |
| @ManyToOne | Define uma relação muitos-para-um. O lado "Many" possui a chave estrangeira. |
| @MessageMapping | (WebSocket/STOMP) Mapeia um método para um destino de mensagem. |
| @MessagingGateway | (Spring Integration) Define uma interface gateway para enviar mensagens. |
| @MockBean | Substitui um bean Spring por um mock Mockito em um teste. |
| @MockMvc | Injeta uma instância MockMvc para simular requisições HTTP em testes. |
| @ModelAttribute | Liga parâmetros de uma requisição HTTP a um objeto Java. Também usado para adicionar atributos ao modelo MVC. |
| @Modifying | Indica que um método @Query executa um UPDATE ou DELETE (não um SELECT). |
N
| Anotação | Descrição |
|---|---|
| @NamedQuery | Define uma consulta JPQL nomeada diretamente em uma entidade. |
| @NamedQueries | Agrupa várias @NamedQuery em uma mesma entidade. |
O
| Anotação | Descrição |
|---|---|
| @OneToMany | Define uma relação um-para-muitos entre duas entidades JPA. O lado "One" é o pai. |
| @OneToOne | Define uma relação um-para-um entre duas entidades JPA. |
| @Order | Define a ordem de prioridade de um bean. Quanto menor o número, maior a prioridade. |
P
| Anotação | Descrição |
|---|---|
| @PatchMapping | Atalho para @RequestMapping(method = PATCH). Atualização parcial de um recurso. |
| @PathVariable | Extrai uma variável do caminho da URL. Ex: /users/\{id\} → @PathVariable Long id. |
| @PostAuthorize | Verifica as autorizações após a execução de um método (pode verificar o valor retornado). |
| @PostConstruct | Executa um método logo após a injeção de todas as dependências do bean. |
| @PostMapping | Atalho para @RequestMapping(method = POST). Criação de um novo recurso. |
| @PreAuthorize | Verifica as autorizações antes da execução de um método. Suporta expressões SpEL. |
| @PreDestroy | Executa um método logo antes da destruição do bean (limpeza, fechamento de conexões). |
| @Primary | Define o bean padrão quando existem vários beans do mesmo tipo. |
| @Profile | Ativa um bean ou configuração apenas para certos perfis (dev, test, prod). |
| @PutMapping | Atalho para @RequestMapping(method = PUT). Substituição completa de um recurso. |
Q
| Anotação | Descrição |
|---|---|
| @Qualifier | Especifica qual bean injetar quando existem vários beans do mesmo tipo. |
| @Query | Define uma consulta JPQL ou SQL nativa personalizada em um método de repositório. |
R
| Anotação | Descrição |
|---|---|
| @Repository | Marca uma classe como camada de acesso a dados. Ativa a tradução de exceções SQL em exceções Spring. |
| @RequestBody | Desserializa o corpo da requisição HTTP (JSON) em um objeto Java. |
| @RequestHeader | Extrai o valor de um header HTTP (Authorization, Content-Type, User-Agent, etc.). |
| @RequestMapping | Anotação base para mapear uma URL para um controlador ou método. Pode especificar o método HTTP. |
| @RequestParam | Extrai um parâmetro da query string. Ex: /search?name=Java → @RequestParam String name. |
| @RequestPart | Extrai uma parte de uma requisição HTTP multipart (arquivos, imagens enviadas). |
| @ResponseBody | Força o retorno de um método em JSON/XML diretamente no corpo da resposta HTTP. |
| @ResponseStatus | Define o código HTTP retornado por um método (200, 201, 204, 404, etc.) ou exceção. |
| @RestClientTest | Teste especializado para clientes REST. Carrega apenas a configuração do cliente. |
| @RestController | Combinação de @Controller + @ResponseBody. Cada método retorna JSON diretamente. |
| @RestControllerAdvice | Combinação de @ControllerAdvice + @ResponseBody. Gestão global de exceções para APIs REST. |
| @Retryable | (Spring Retry) Tenta novamente automaticamente um método em caso de falha (ex: erro de rede ou banco). |
| @RolesAllowed | (JSR-250) Especifica os papéis permitidos para um método. Alternativa padrão ao @Secured. |
S
| Anotação | Descrição |
|---|---|
| @Scheduled | Agenda a execução periódica de um método (fixedRate, fixedDelay, cron). Requer @EnableScheduling. |
| @Scope | Define o escopo de um bean: singleton (padrão), prototype, request, session, application. |
| @Secured | Especifica os papéis necessários para acessar um método. Mais simples que @PreAuthorize. |
| @SendTo | (WebSocket/STOMP) Especifica o destino de resposta para uma mensagem WebSocket. |
| @Service | Marca uma classe como camada de lógica de negócio. Detectado pelo component scan. |
| @SessionAttributes | Armazena atributos do modelo na sessão HTTP entre requisições. |
| @SessionScope | Define o escopo de um bean como sessão HTTP (um bean por sessão de usuário). |
| @SpyBean | Envolve um bean real com um spy Mockito nos testes (chamadas reais exceto as stubadas). |
| @SpringBootApplication | Ponto de entrada da aplicação. Combina @Configuration, @EnableAutoConfiguration e @ComponentScan. |
| @SpringBootTest | Carrega o contexto Spring completo para testes de integração. |
| @Sql | Executa scripts SQL antes ou depois de um teste para preparar ou limpar o banco de dados. |
T
| Anotação | Descrição |
|---|---|
| @Table | Personaliza o nome da tabela, schema, restrições de unicidade e índices para uma entidade JPA. |
| @Test | (JUnit) Marca um método como teste unitário. |
| @TestConfiguration | Fornece uma configuração Spring específica para testes (beans de teste, mocks). |
| @Timeout | (JUnit 5) Define um tempo máximo para execução de um teste. O teste falha se o tempo for excedido. |
| @Transactional | Gerencia transações de banco. Commit em sucesso, rollback em exceção. readOnly = true otimiza leituras. |
| @TransactionalEventListener | Escuta um evento Spring e executa apenas após o commit (ou rollback) da transação. |
| @Transient | Exclui um campo da persistência JPA (sem coluna no banco de dados). |
V
| Anotação | Descrição |
|---|---|
| @Valid | Ativa a validação Bean Validation em um objeto (@NotNull, @Size, @Email, etc.). |
| @Validated | Variante Spring do @Valid com suporte a grupos de validação. |
| @Value | Injeta um valor do arquivo de configuração. Ex: @Value("${app.name}"). Suporta valores padrão e SpEL. |
| @ValueSource | (JUnit 5) Fornece valores de entrada para um teste parametrizado. |
W
| Anotação | Descrição |
|---|---|
| @WebFluxTest | Teste especializado para controladores WebFlux (programação reativa). |
| @WebMvcTest | Teste especializado que carrega apenas a camada de controlador MVC (sem banco, sem serviços reais). |
| @WebTestClient | Injeta um WebTestClient para simular requisições HTTP em testes WebFlux. |
Anotações de Validação (Bean Validation)
| Anotação | Descrição |
|---|---|
| @NotNull | O campo não pode ser null. |
| @NotEmpty | O campo não pode ser null nem vazio (String, Collection, Map). |
| @NotBlank | O campo não pode ser null, vazio ou conter apenas espaços. |
| @Size(min, max) | O tamanho deve estar entre min e max (String, Collection). |
| @Min(value) | O valor numérico deve ser maior ou igual a value. |
| @Max(value) | O valor numérico deve ser menor ou igual a value. |
| O campo deve ter um formato de endereço de e-mail válido. | |
| @Pattern(regexp) | O campo deve corresponder à expressão regular informada. |
| @Positive | O número deve ser estritamente positivo (> 0). |
| @PositiveOrZero | O número deve ser positivo ou zero (>= 0). |
| @Negative | O número deve ser estritamente negativo (< 0). |
| @Past | A data deve estar no passado. |
| @Future | A data deve estar no futuro. |
| @DecimalMin | O valor decimal deve ser maior ou igual ao mínimo. |
| @DecimalMax | O valor decimal deve ser menor ou igual ao máximo. |
Estatísticas
Em resumo
Este dicionário cobre 120+ anotações distribuídas em:
- Core Spring: ~25 anotações (IoC, DI, configuração, ciclo de vida)
- Web / REST: ~20 anotações (mapeamento, parâmetros, respostas, erros)
- Data / JPA: ~20 anotações (entidades, relações, consultas, transações)
- JSON / Jackson: ~7 anotações (formato, filtro, ignore)
- Security: ~7 anotações (configuração, autorização)
- Cache: ~5 anotações (cacheable, evict, put, config)
- Async / Scheduling: ~5 anotações
- Test: ~25 anotações (JUnit, Spring Test, mocks)
- Validation: ~15 anotações (Bean Validation)
- Messaging: ~5 anotações (JMS, WebSocket)
- Cloud / Resilience: ~3 anotações (CircuitBreaker, Retry, Fallback)