This repository contains source code, practical examples, and projects created while mastering the Spring Framework ecosystem. It serves as a comprehensive guide to building robust web applications and RESTful services using modern Java technologies.
The goal of this project is to document the process of building powerful web applications using the Spring ecosystem. It covers everything from core Spring concepts to advanced data management with Hibernate.
- Language: Java
- Frameworks: Spring Boot, Spring MVC, Spring Framework
- ORM: Hibernate
- Build Tool: Maven/Gradle (Choose whichever you are using)
- Understanding core components and dependency injection.
- Managing bean life cycles and configuration.
- Leveraging auto-configuration for rapid development.
- Managing starter dependencies.
- Building scalable REST APIs.
- Model-View-Controller (MVC) architecture.
- Request handling and routing.
- Form validation and frontend integration.
- Integrating Hibernate for efficient database interactions.
- Performing CRUD operations.
- Optimizing database performance.
To run these projects, you need:
- Java Development Kit (JDK): Version 17 or higher (recommended).
- IDE: IntelliJ IDEA, Eclipse, or VS Code.
- Basic Knowledge: Core Java programming.
/src: Main source code for the applications./resources: Configuration files (application.properties/yml)./test: Unit and integration tests.
Focus: Core Spring Boot concepts, Project Structure, Maven, and Configuration.
| Status | Topic | Key Learnings |
|---|---|---|
| ✅ | Spring Initializr | creating the project, choosing dependencies |
| ✅ | Maven Concepts | pom.xml, dependency management, project structure |
| ✅ | REST Controller | @RestController, @GetMapping |
| ✅ | DevTools | Live reload, fast feedback loop |
| ✅ | Actuator | Monitoring app health and metrics |
| ✅ | Accessing Endpoints | Currently Learning |
| ✅ | Securing Endpoints | Basic security configuration |
| ✅ | Injecting Properties | Using application.properties & @Value |
| ✅ | Configuring Server | Port changes, server timeouts |
Focus: Mastering the Spring Container, managing dependencies, and configuring Spring Beans.
| Status | Topic | Key Learnings |
|---|---|---|
| ✅ | Inversion of Control (IoC) | Outsourcing object creation to the Spring Factory |
| 🔄 | Dependency Injection (DI) | Currently Learning - Injecting helpers into the app |
| ⬜ | Constructor Injection | Recommended injection type, using @Autowired |
| ⬜ | Component Scanning | Using @Component and @ComponentScan |
| ⬜ | Setter & Field Injection | Alternative ways to inject dependencies |
| ⬜ | Qualifiers | Using @Qualifier to choose between multiple bean implementations |
| ⬜ | Primary Annotation | Using @Primary to set a default bean |
| ⬜ | Lazy Initialization | Improving startup time with @Lazy |
| ⬜ | Bean Scopes | Singleton (default) vs Prototype scopes |
| ⬜ | Bean Lifecycle | @PostConstruct (init) and @PreDestroy (cleanup) |
| ⬜ | Configuring Beans | Using @Configuration and @Bean for 3rd party classes |
This repository is for educational purposes and documents my progress in mastering modern Java web development.