Spring & Spring Boot - 12 Week Study Plan
Month 1 – Spring Core + MVC (Foundations)
=========================================
Week 1: Java Refresh + Tools
- Mon: Revise OOP concepts (Inheritance, Polymorphism, Encapsulation)
- Tue: Collections Framework + Generics
- Wed: Streams & Lambda basics
- Thu: JDBC basics (CRUD with MySQL)
- Fri: Learn Maven (dependencies, build)
- Sat (3h): Install IntelliJ/Eclipse + Postman + MySQL → Write JDBC CRUD app
- Sun (3h): Revise & document notes on GitHub/Gist
Week 2: Spring Core (IoC & DI)
- Mon: Introduction to Spring, IoC Container
- Tue: Bean lifecycle + Bean scopes (singleton, prototype)
- Wed: Dependency Injection (constructor vs setter)
- Thu: Annotation-based config (@Component, @Autowired)
- Fri: Java-based config (@Configuration, @Bean)
- Sat (3h): Mini-project → ShoppingCart with Spring Beans & DI
- Sun (3h): Add logger using AOP
Week 3: Spring AOP + Data Access
- Mon: AOP concepts (JoinPoints, Advice, Pointcut)
- Tue: Implement logging using AOP
- Wed: JDBC Template in Spring
- Thu: Intro to JPA & Hibernate integration
- Fri: Spring Transactions (declarative @Transactional)
- Sat (3h): Student Database CRUD using Spring + JPA
- Sun (3h): Add service layer & repository pattern
Week 4: Spring MVC
- Mon: DispatcherServlet, Request flow
- Tue: Controllers & @RequestMapping
- Wed: @ResponseBody, JSON with Jackson
- Thu: Form handling & validation basics
- Fri: Exception handling in MVC
- Sat (3h): Employee Management CRUD app with Spring MVC
- Sun (3h): Document REST endpoints with Postman
--------------------------------------------------
Month 2 – Spring Boot (APIs + Security)
=======================================
Week 5: Spring Boot Basics
- Mon: Why Spring Boot? Differences from Spring
- Tue: Starters & Auto-configuration
- Wed: Spring Boot CLI & Initializr
- Thu: application.properties & YAML
- Fri: Spring Boot Actuator
- Sat (3h): Convert Employee API → Spring Boot
- Sun (3h): Add monitoring with Actuator endpoints
Week 6: Spring Boot + JPA
- Mon: Intro to Spring Data JPA
- Tue: @Entity, @Id, @GeneratedValue, repositories
- Wed: Relationships (OneToMany, ManyToMany)
- Thu: Paging & Sorting
- Fri: Custom queries with @Query
- Sat (3h): Blog API (Users, Posts, Comments) with JPA
- Sun (3h): Extend Blog API → Pagination + Sorting
Week 7: REST APIs & Validation
- Mon: REST conventions (GET, POST, PUT, DELETE)
- Tue: @RestController & ResponseEntity
- Wed: Exception handling in Boot (@ControllerAdvice)
- Thu: Validation with @Valid + Hibernate Validator
- Fri: Intro to Swagger/OpenAPI
- Sat (3h): Add validation + Swagger docs to Blog API
- Sun (3h): Test APIs with Postman collections
Week 8: Security Basics
- Mon: Spring Security intro
- Tue: Configure Basic Auth
- Wed: Role-based access control
- Thu: JWT basics
- Fri: Implement JWT authentication filter
- Sat (3h): Secure Blog API with JWT & roles
- Sun (3h): Test JWT APIs with Postman
--------------------------------------------------
Month 3 – Advanced Boot + Projects
==================================
Week 9: Microservices
- Mon: Microservices intro + Monolith vs Microservices
- Tue: Spring Cloud & Eureka basics
- Wed: Service registration & discovery
- Thu: API Gateway basics
- Fri: Config Server intro
- Sat (3h): Split Blog API into User & Post microservices
- Sun (3h): Add Eureka for service discovery
Week 10: Messaging & Async
- Mon: Messaging intro (Kafka vs RabbitMQ)
- Tue: Spring Boot with RabbitMQ basics
- Wed: Spring Boot with Kafka basics
- Thu: @Async and scheduling tasks
- Fri: Retry mechanism in Spring
- Sat (3h): Add notification service to Blog API with Kafka
- Sun (3h): Test async + messaging flow
Week 11: Deployment
- Mon: Docker basics (images, containers)
- Tue: Dockerize Spring Boot app
- Wed: Push Docker image to DockerHub
- Thu: Deploy on Heroku (or AWS EB if available)
- Fri: Environment variables & profiles
- Sat (3h): Deploy Blog API on Heroku
- Sun (3h): Deploy microservices with Docker Compose
Week 12: Capstone Project (E-commerce API)
- Mon: Design services (User, Product, Order, Payment)
- Tue: Implement User + Product service
- Wed: Implement Order service
- Thu: Implement Payment service
- Fri: Add JWT + Swagger to all services
- Sat (3h): Integrate with Eureka + API Gateway
- Sun (3h): Dockerize & Deploy final project → Push to GitHub