This repository contains my notes for learning the Spring Framework, as well as key concepts related to Object-Oriented Design, Design Patterns, and Software Architecture.
It also includes mini-projects that I will develop to learn Spring
I'm following these 2 resources:
-
Java Spring Framework 6 with Spring Boot 3 with Telusko (Udemy course)
-
Spring Start Here: Learn what you need and learn it well by Laurentiu Spilca (Book)
NOTE: These mini-projects are self-created for additional practice and are not directly provided by the course or the book
- Project: Simple Dependency Injection Demo
- Description: Create a basic console application demonstrating Dependency Injection (DI) using XML configuration, annotations, and Java-based configuration.
- Dependencies: None (Core Spring only).
- Instructions:
- Set up a new Maven project.
- Create a configuration class with
@Configurationannotation. - Define beans using
@Beanmethod. - Demonstrate DI using a simple
MessageService.
- Project: Basic Calculator Application
- Description: Build a console-based calculator using Spring Beans configured with Java configuration (no XML).
- Dependencies: None (Core Spring only).
- Instructions:
- Create a CalculatorService class with methods for addition, subtraction, etc.
- Use
@Configurationand@Componentto configure beans. - Demonstrate usage with a main application class.
- Project: Greeting API
- Description: Create a Spring Boot application with an HTTP endpoint that returns a greeting message.
- Dependencies: Spring Boot Starter Web.
- Instructions:
- Create a Spring Boot project using Spring Initializr.
- Add a controller with a
@GetMappingfor the greeting. - Test the API using a browser or Postman.
- Project: Student Management Console App
- Description: Develop a console application that uses Spring JDBC for CRUD operations on a Student database.
- Dependencies: Spring JDBC, H2 Database (or MySQL).
- Instructions:
- Create a Student class and a StudentDAO interface.
- Implement the DAO using JdbcTemplate.
- Test CRUD operations using console input/output.
- Project: Online Book Store (Basic)
- Description: Build a Spring Boot web application with a simple homepage listing book titles and an "Add Book" form.
- Dependencies: Spring Boot Starter Web, Thymeleaf.
- Project: User Activity Logger
- Description: Add a logging aspect to an existing application that tracks user actions using Aspect-Oriented Programming (AOP).
- Dependencies: Spring Boot Starter AOP.
- Instructions:
- Create an Aspect class using
@Aspectannotation. - Add pointcuts for logging method calls.
- Create an Aspect class using
- Project: Secure User Portal
- Description: Build a web app with user authentication using Spring Security.
- Dependencies: Spring Boot Starter Security.
- Instructions:
- Configure security settings (in-memory users initially).
- Add role-based access control.
- Project: Secure REST API with JWT
- Description: Secure your REST API with JWT for authentication.
- Dependencies: Spring Boot Starter Security, JWT.
- Project: Containerized Spring Boot Application
- Description: Dockerize a Spring Boot application.
- Dependencies: Docker.
- Project: Deploy API to AWS
- Description: Deploy a Spring Boot app to AWS Elastic Beanstalk.
- Dependencies: AWS CLI, AWS Elastic Beanstalk.
- Project: E-commerce Microservices Application
- Description: Build a system with Product, Order, and Payment microservices.
- Dependencies: Spring Cloud, Eureka, Feign, Gateway.
- Project: AI-Powered Chatbot API
- Description: Build a chatbot API using OpenAI API integrated with Spring Boot.
- Dependencies: OpenAI API, Spring Boot Starter Web.