DEV Community

Cover image for Guia Resumido de Anotações Essenciais no Spring Framework
Kauê Matos
Kauê Matos

Posted on • Edited on

Guia Resumido de Anotações Essenciais no Spring Framework

Este guia apresenta as anotações mais importantes utilizadas no ecossistema Spring e Spring Boot, focando em funcionalidades de configuração, injeção de dependências, controle de fluxo, mapeamento de dados e testes.

🔹 Injeção de Dependências e Configuração

  • @Autowired: Injeta automaticamente dependências gerenciadas pelo Spring.
  • @Component, @Service, @Repository: Declaram classes como beans para serem gerenciadas pelo contênier do Spring.
  • @Configuration: Declara uma classe como fornecedora de beans via métodos com @Bean.
  • @Value: Injeta valores do application.properties.
  • @Profile: Define o perfil em que o bean será carregado.
  • @Primary: Define a implementação padrão quando houver múltiplos beans do mesmo tipo.

🔹 Validação de Dados

  • @NotNull, @NotBlank, @NotEmpty: Validação básica de preenchimento.
  • @Min, @Positive: Restrição de valores numéricos.
  • @Pattern: Expressões regulares para validação de strings.
  • @Valid: Indica que os dados de entrada devem ser validados conforme as anotações do bean.
  • @Email, @CPF: Valida formatos específicos.

🔹 Web e REST Controllers

  • @RestController: Define a classe como controlador REST.
  • @RequestMapping, @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping: Mapeamento de rotas HTTP.
  • @RequestBody, @RequestParam, @PathVariable: Extração de dados da requisição.
  • @ResponseBody, @ResponseStatus: Configura o retorno da requisição.
  • @CrossOrigin: Permite requisições entre domínios (CORS).
  • @ControllerAdvice e @ExceptionHandler: Tratamento global de exceções.

🔹 Persistência com JPA

  • @Entity, @Table: Mapeia classes como entidades de banco de dados.
  • @Id, @GeneratedValue: Define a chave primária e sua estratégia de geração.
  • @Column: Define atributos da coluna.
  • @JoinColumn, @JoinTable, @OneToMany, @ManyToOne, @ManyToMany, @OneToOne: Relacionamentos entre entidades.
  • @Embeddable, @Embedded, @EmbeddedId: Tipos incorporáveis.
  • @Enumerated: Define o formato de persistência de enums.
  • @MappedSuperclass: Herança de atributos entre entidades.
  • @CreationTimestamp, @LastModifiedDate, @CreatedDate: Auditoria automática.
  • @Query, @Modifying: Consulta personalizada e operações de escrita no banco.

🔹 Testes Automatizados

  • @SpringBootTest: Carrega o contexto da aplicação para testes integrados.
  • @DataJpaTest: Testa exclusivamente a camada de repositórios.
  • @MockBean, @Mock, @InjectMocks, @Spy: Cria objetos simulados (mocks/spies) para testes.
  • @BeforeEach, @AfterEach, @BeforeAll, @AfterAll: Ciclo de vida dos testes.
  • @Test, @DisplayName, @TestMethodOrder: Define testes e sua ordem de execução.
  • @WithMockUser: Simula autenticação em testes de segurança.

🔹 Segurança e Acessos

  • @EnableWebSecurity, @EnableGlobalMethodSecurity: Habilita segurança HTTP e controle por método.
  • @PreAuthorize: Controla acesso a métodos com expressões de segurança.
  • @SecurityRequirement: Define requisitos de autenticação em APIs.

🔹 Integração e Cloud

  • @EnableFeignClients, @FeignClient: Habilita e configura chamadas HTTP com Feign.
  • @EnableEurekaClient, @EnableEurekaServer: Ativa o discovery de serviços com Eureka.

📄 Considerações Finais

Este compês de anotações cobre os principais recursos e boas práticas em aplicações Spring modernas, otimizando o uso do framework em projetos reais com segurança, integração, persistência e testes.

Top comments (0)