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 (1)

Collapse
 
isramedeiros profile image
Israel Medeiros

Muito útil!