Criei esse projeto apresentando os conceitos sobre o Spring Boot através de exemplos práticos e progressivos.
Conceitos: Inicialização básica do Spring Boot, anotações fundamentais
- @SpringBootApplication: Anotação principal que configura auto-configuração
- @Component: Marca uma classe como componente gerenciado pelo Spring
- SpringApplication.run(): Método para inicializar a aplicação
- Estrutura básica: Demonstra como criar uma aplicação Spring Boot simples
Conceitos: Inversão de Controle, Injeção de Dependência, configuração de beans
- @Configuration: Marca uma classe como fonte de definições de beans
- @Bean: Define um bean customizado no contexto do Spring
- @Autowired: Injeção automática de dependências
- Injeção de Dependência: Demonstra como o Spring gerencia dependências automaticamente
Conceitos: Escopos de beans, gerenciamento de ciclo de vida
- @Scope("singleton"): Padrão - uma única instância por contexto (padrão)
- @Scope("prototype"): Nova instância criada a cada requisição
- Ciclo de vida dos beans: Controle sobre quando e como os objetos são criados
- Gerenciamento de estado: Diferenças entre escopos para objetos com estado
Conceitos: Configuração externa, propriedades de aplicação
- @Value: Injeção de valores de propriedades externas
- application.properties: Arquivo de configuração padrão
- Valores padrão: Definição de valores fallback
- Configuração flexível: Separação entre código e configuração
Conceitos: Configuração tipada, agrupamento de propriedades
- @ConfigurationProperties: Mapeamento de propriedades para objetos Java
- Configuração tipada: Validação e conversão automática de tipos
- Agrupamento: Organização lógica de configurações relacionadas
- Validação: Verificação automática de valores de configuração
Conceitos: Persistência de dados, mapeamento objeto-relacional
- Modelo de dados: Criação de entidades simples
- Mapeamento: Estrutura de classes para persistência
- Integração Hibernate: Configuração do ORM
- Preparação para JPA: Base para implementações mais avançadas
Conceitos: Repositórios JPA, operações CRUD automáticas
- @Entity: Marcação de entidades JPA
- @Table, @Column: Mapeamento detalhado para banco de dados
- JpaRepository: Interface com métodos CRUD pré-implementados
- Query Methods: Criação de consultas através de nomes de métodos
- @Query: Consultas JPQL customizadas
Conceitos: Repositórios customizados, operações específicas
- Repository Pattern: Implementação do padrão repositório
- Operações customizadas: Métodos específicos para regras de negócio
- Separação de responsabilidades: Lógica de acesso a dados isolada
- Reutilização: Componentes reutilizáveis para persistência
Conceitos: APIs REST, documentação automática, controladores web
- @RestController: Criação de APIs REST
- @GetMapping, @PostMapping, etc.: Mapeamento de endpoints HTTP
- Swagger/OpenAPI: Documentação automática da API
- CRUD completo: Operações Create, Read, Update, Delete
- Integração web: Aplicação web funcional
Conceitos: Tratamento global de exceções, tratamento de erros
- @RestControllerAdvice: Tratamento global de exceções
- @ExceptionHandler: Mapeamento de exceções para respostas HTTP
- BusinessException: Exceções de negócio customizadas
- ResponseError: Padrão de resposta de erro consistente
- Tratamento centralizado: Gerenciamento unificado de erros
Conceitos: Segurança web, autenticação em memória
- @EnableWebSecurity: Habilita segurança web
- WebSecurityConfigurerAdapter: Configuração de segurança (deprecated)
- Autenticação em memória: Usuários hardcoded para desenvolvimento
- Controle de acesso: Restrições baseadas em roles
- Formulário de login: Interface de autenticação padrão
Conceitos: Segurança com banco de dados, usuários persistentes
- UserDetailsService: Implementação customizada para autenticação
- Usuários persistentes: Autenticação contra banco de dados
- Integração JPA: Segurança com dados reais
- Configuração avançada: Segurança mais robusta e flexível
Conceitos: Autenticação stateless, tokens JWT, segurança moderna
- JWT (JSON Web Tokens): Autenticação sem estado
- Stateless authentication: Não requer sessões no servidor
- Filtros de segurança: Interceptação e validação de requests
- Tokens seguros: Criptografia e assinatura digital
- Autorização baseada em claims: Controle de acesso via payload do token
Cada projeto pode ser executado independentemente:
# Navegar para o projeto desejado
cd [nome-do-projeto]
# Executar com Maven
mvn spring-boot:run
# Ou compilar e executar
mvn clean compile
mvn spring-boot:runEsta sequência de projetos foi projetada para:
- Começar com o básico - conceitos fundamentais do Spring
- Progressão gradual - cada projeto constrói sobre o anterior
- Conceitos práticos - exemplos funcionais e executáveis
- Cobertura completa - desde IoC até JWT avançado
- Spring Boot - Framework principal
- Spring Data JPA - Persistência de dados
- Spring Security - Segurança e autenticação
- Hibernate - ORM
- Swagger/OpenAPI - Documentação de APIs
- JWT - Autenticação stateless
- Maven - Gerenciamento de dependências
- Todos os projetos são independentes e podem ser executados separadamente
- Cada projeto demonstra conceitos específicos do ecossistema Spring
- Ideal para aprendizado progressivo e prática de conceitos
- Configurações podem ser adaptadas para diferentes ambientes
Desenvolvido por Ariel França.
Sinta-se à vontade para contribuir com este projeto! Sugestões, melhorias e pull requests são muito bem-vindos. Basta abrir uma issue ou enviar um PR para colaborar.