Pular para o conteúdo principal

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çãoDescrição
@ActiveProfilesAtiva 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.
@AsyncExecuta um método de forma assíncrona em uma thread separada. Requer @EnableAsync.
@AutoConfigureDataJpaConfigura automaticamente o JPA para um teste unitário.
@AutoConfigureJsonTestersConfigura automaticamente as ferramentas de serialização/desserialização JSON para testes.
@AutoConfigureMockMvcConfigura automaticamente o objeto MockMvc para um teste unitário.
@AutoConfigureWebTestClientConfigura automaticamente o WebTestClient para testes WebFlux.
@AutowiredInjeta automaticamente uma dependência (bean Spring) em uma classe. Prefira a injeção por construtor.

B​

AnotaçãoDescrição
@BeanDeclara 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çãoDescrição
@CacheableArmazena em cache o resultado de um método. As chamadas seguintes retornam o resultado do cache.
@CacheConfigConfigura parâmetros de cache (nome, tempo de vida, tamanho máximo) para uma classe inteira.
@CacheEvictRemove uma ou todas as entradas do cache quando o método é chamado.
@CachePutAtualiza 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.
@ColumnConfigura o mapeamento de uma propriedade JPA para uma coluna no banco de dados (nome, nullable, unique, length).
@ComponentMarca uma classe como um bean Spring genérico, detectado automaticamente pelo component scan.
@ComponentScanVarre os pacotes para detectar automaticamente classes anotadas com @Component, @Service, @Repository, etc.
@ConditionalCondiciona a criação de um bean de acordo com uma condição personalizada.
@ConditionalOnClassCria um bean apenas se uma classe específica estiver presente no classpath.
@ConditionalOnMissingBeanCria um bean apenas se nenhum outro bean do mesmo tipo já existir.
@ConditionalOnPropertyCria um bean apenas se uma propriedade tiver um determinado valor na configuração.
@ConfigurationMarca uma classe de configuração Spring contendo métodos @Bean.
@ConfigurationPropertiesLiga um grupo de propriedades do arquivo de configuração a um objeto Java (ex: app.mail.host).
@ControllerMarca uma classe como controlador Spring MVC que retorna views (templates HTML).
@ControllerAdviceDefine um conselheiro global para todos os controladores (gestão centralizada de exceções, binding, etc.).
@CrossOriginPermite requisições HTTP cross-origin (CORS) de domínios específicos ou de todos os domínios.

D​

AnotaçãoDescrição
@DataJpaTestTeste especializado que carrega apenas a camada JPA (repositórios, EntityManager, banco em memória).
@DeleteMappingAtalho 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çãoDescrição
@EnableAsyncAtiva a execução assíncrona na aplicação. Necessário para que o @Async funcione.
@EnableCachingAtiva o cache na aplicação. Necessário para que o @Cacheable funcione.
@EnableConfigurationPropertiesAtiva o binding automático de propriedades de configuração para objetos @ConfigurationProperties.
@EnableJmsAtiva o suporte a JMS (Java Message Service) para mensageria na aplicação.
@EnableJpaRepositoriesAtiva o suporte a repositórios Spring Data JPA. Configurado automaticamente pelo Spring Boot.
@EnableSchedulingAtiva o agendamento de tarefas. Necessário para que o @Scheduled funcione.
@EnableWebMvcAtiva a configuração do Spring MVC. Raramente necessário, pois o Spring Boot ativa automaticamente.
@EnableWebSecurityAtiva a configuração personalizada do Spring Security.
@EnableMethodSecurityAtiva a segurança a nível de métodos (@PreAuthorize, @PostAuthorize, @Secured).
@EntityMarca uma classe como entidade JPA, mapeada para uma tabela no banco de dados.
@EnumeratedDefine como um enum Java é armazenado no banco: STRING (texto) ou ORDINAL (número).
@EventListenerEscuta eventos do Spring (inicialização da aplicação, eventos customizados, etc.).
@ExceptionHandlerTrata 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çãoDescrição
@Fallback(Spring Cloud) Fornece um método de fallback quando um método @CircuitBreaker falha.
@FlywayTestTesta 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çãoDescrição
@GeneratedValueDefine a estratégia de geração automática da chave primária (IDENTITY, SEQUENCE, UUID, AUTO).
@GetMappingAtalho para @RequestMapping(method = GET). Mapeia um método para uma requisição HTTP GET.

I​

AnotaçãoDescrição
@IdMarca um campo como chave primária de uma entidade JPA.
@ImportImporta outras classes de configuração em uma classe @Configuration.
@InitBinderPersonaliza o binding de dados entre requisições HTTP e objetos Java (conversão, validação, formatação).

J​

AnotaçãoDescrição
@JoinColumnDefine a coluna de chave estrangeira para uma relação JPA (@ManyToOne, @OneToOne).
@JoinTableDefine a tabela de junção para uma relação @ManyToMany (nome da tabela, colunas de junção).
@JmsListenerDefine um método que escuta mensagens JMS em uma fila ou tópico.
@JsonFormatPersonaliza o formato de serialização JSON (datas, números). Ex: @JsonFormat(pattern = "yyyy-MM-dd").
@JsonIgnoreExclui uma propriedade da serialização/desserialização JSON.
@JsonIncludeControla quais propriedades são incluídas no JSON (ex: excluir valores nulos).
@JsonPropertyRenomeia uma propriedade no JSON. Ex: @JsonProperty("full_name") para um campo fullName.
@JsonSubTypesDefine subtipos para desserialização polimórfica JSON.
@JsonTestTeste especializado apenas para serialização/desserialização JSON.
@JsonTypeInfoAdiciona informações de tipo no JSON para permitir desserialização polimórfica.
@JsonViewFiltra propriedades JSON conforme a view solicitada (ex: view pública vs view admin).

L​

AnotaçãoDescrição
@LazyRetarda a inicialização de um bean até seu primeiro uso. Melhora o tempo de inicialização.
@LobIndica um campo do tipo Large Object: CLOB (texto longo) ou BLOB (binário).

M​

AnotaçãoDescrição
@ManyToManyDefine uma relação muitos-para-muitos entre duas entidades JPA. Usa uma tabela de junção.
@ManyToOneDefine 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.
@MockBeanSubstitui um bean Spring por um mock Mockito em um teste.
@MockMvcInjeta uma instância MockMvc para simular requisições HTTP em testes.
@ModelAttributeLiga parâmetros de uma requisição HTTP a um objeto Java. Também usado para adicionar atributos ao modelo MVC.
@ModifyingIndica que um método @Query executa um UPDATE ou DELETE (não um SELECT).

N​

AnotaçãoDescrição
@NamedQueryDefine uma consulta JPQL nomeada diretamente em uma entidade.
@NamedQueriesAgrupa várias @NamedQuery em uma mesma entidade.

O​

AnotaçãoDescrição
@OneToManyDefine uma relação um-para-muitos entre duas entidades JPA. O lado "One" é o pai.
@OneToOneDefine uma relação um-para-um entre duas entidades JPA.
@OrderDefine a ordem de prioridade de um bean. Quanto menor o número, maior a prioridade.

P​

AnotaçãoDescrição
@PatchMappingAtalho para @RequestMapping(method = PATCH). Atualização parcial de um recurso.
@PathVariableExtrai uma variável do caminho da URL. Ex: /users/\{id\} → @PathVariable Long id.
@PostAuthorizeVerifica as autorizações após a execução de um método (pode verificar o valor retornado).
@PostConstructExecuta um método logo após a injeção de todas as dependências do bean.
@PostMappingAtalho para @RequestMapping(method = POST). Criação de um novo recurso.
@PreAuthorizeVerifica as autorizações antes da execução de um método. Suporta expressões SpEL.
@PreDestroyExecuta um método logo antes da destruição do bean (limpeza, fechamento de conexões).
@PrimaryDefine o bean padrão quando existem vários beans do mesmo tipo.
@ProfileAtiva um bean ou configuração apenas para certos perfis (dev, test, prod).
@PutMappingAtalho para @RequestMapping(method = PUT). Substituição completa de um recurso.

Q​

AnotaçãoDescrição
@QualifierEspecifica qual bean injetar quando existem vários beans do mesmo tipo.
@QueryDefine uma consulta JPQL ou SQL nativa personalizada em um método de repositório.

R​

AnotaçãoDescrição
@RepositoryMarca uma classe como camada de acesso a dados. Ativa a tradução de exceções SQL em exceções Spring.
@RequestBodyDesserializa o corpo da requisição HTTP (JSON) em um objeto Java.
@RequestHeaderExtrai o valor de um header HTTP (Authorization, Content-Type, User-Agent, etc.).
@RequestMappingAnotação base para mapear uma URL para um controlador ou método. Pode especificar o método HTTP.
@RequestParamExtrai um parâmetro da query string. Ex: /search?name=Java → @RequestParam String name.
@RequestPartExtrai uma parte de uma requisição HTTP multipart (arquivos, imagens enviadas).
@ResponseBodyForça o retorno de um método em JSON/XML diretamente no corpo da resposta HTTP.
@ResponseStatusDefine o código HTTP retornado por um método (200, 201, 204, 404, etc.) ou exceção.
@RestClientTestTeste especializado para clientes REST. Carrega apenas a configuração do cliente.
@RestControllerCombinação de @Controller + @ResponseBody. Cada método retorna JSON diretamente.
@RestControllerAdviceCombinaçã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çãoDescrição
@ScheduledAgenda a execução periódica de um método (fixedRate, fixedDelay, cron). Requer @EnableScheduling.
@ScopeDefine o escopo de um bean: singleton (padrão), prototype, request, session, application.
@SecuredEspecifica 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.
@ServiceMarca uma classe como camada de lógica de negócio. Detectado pelo component scan.
@SessionAttributesArmazena atributos do modelo na sessão HTTP entre requisições.
@SessionScopeDefine o escopo de um bean como sessão HTTP (um bean por sessão de usuário).
@SpyBeanEnvolve um bean real com um spy Mockito nos testes (chamadas reais exceto as stubadas).
@SpringBootApplicationPonto de entrada da aplicação. Combina @Configuration, @EnableAutoConfiguration e @ComponentScan.
@SpringBootTestCarrega o contexto Spring completo para testes de integração.
@SqlExecuta scripts SQL antes ou depois de um teste para preparar ou limpar o banco de dados.

T​

AnotaçãoDescrição
@TablePersonaliza 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.
@TestConfigurationFornece 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.
@TransactionalGerencia transações de banco. Commit em sucesso, rollback em exceção. readOnly = true otimiza leituras.
@TransactionalEventListenerEscuta um evento Spring e executa apenas após o commit (ou rollback) da transação.
@TransientExclui um campo da persistência JPA (sem coluna no banco de dados).

V​

AnotaçãoDescrição
@ValidAtiva a validação Bean Validation em um objeto (@NotNull, @Size, @Email, etc.).
@ValidatedVariante Spring do @Valid com suporte a grupos de validação.
@ValueInjeta 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çãoDescrição
@WebFluxTestTeste especializado para controladores WebFlux (programação reativa).
@WebMvcTestTeste especializado que carrega apenas a camada de controlador MVC (sem banco, sem serviços reais).
@WebTestClientInjeta um WebTestClient para simular requisições HTTP em testes WebFlux.

Anotações de Validação (Bean Validation)​

AnotaçãoDescrição
@NotNullO campo não pode ser null.
@NotEmptyO campo não pode ser null nem vazio (String, Collection, Map).
@NotBlankO 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.
@EmailO campo deve ter um formato de endereço de e-mail válido.
@Pattern(regexp)O campo deve corresponder à expressão regular informada.
@PositiveO número deve ser estritamente positivo (> 0).
@PositiveOrZeroO número deve ser positivo ou zero (>= 0).
@NegativeO número deve ser estritamente negativo (< 0).
@PastA data deve estar no passado.
@FutureA data deve estar no futuro.
@DecimalMinO valor decimal deve ser maior ou igual ao mínimo.
@DecimalMaxO 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)

⬅️ Voltar ao Módulo 17 | ⬅️ Voltar para o início