
This contains all the resources such as codes, images, script, links and materials used in this course. Please download them.
Explore Spring Boot as a production-ready, Java-based framework for backend apps, microservices, and cloud-native solutions, featuring auto-configuration, starter dependencies, and easy rapid development.
Discover the difference between Spring and Spring Boot, where Spring is the engine that powers the Spring Boot framework, which contains Tomcat, security, Lombok, and other components.
Explore the three layers of a Spring Boot application: the controller, the service, and the repository. Learn how the client calls the api layer and data moves to the repository.
Check your java version in the terminal, then download and install the java development kit (jdk) from oracle to include the runtime environment for spring boot development.
Download and install IntelliJ, open the project, and explore folders like .idea, .mvn, and src with pom.sml. Run the Spring Boot entry point and review static resources, templates, and application.properties.
Configure multiple JDKs in your Spring Boot 4 project, run and monitor logs, and change the server port via application.property to deploy a jar.
Implement a Spring Boot repository layer using @Repository to connect to an in-memory data store, with find all, find by id, save, and delete by id methods for contact data.
Spring Boot demonstrates a service layer that handles business logic for contacts, using dependency injection to access the repository. It offers CRUD operations with api responses (200, 201, 204, 404).
Create the api layer in spring boot by building a rest controller and wiring a contact service through dependency injection. Expose get endpoints such as /api/contacts to fetch data.
Learn to implement a get request to fetch all contacts, wrapping the result in a response entity. Understand API/contact route handling and how path conflicts produce runtime errors.
Apply post mapping to create contacts using a request body for name and phone number, tested with postman. Explore endpoint setup, response handling, and in-memory storage before database integration.
Implement a delete mapping in Spring Boot that accepts a path variable id and returns a response entity after deleting the contact via the contact service.
Learn how to implement a put mapping in spring boot to update a contact by id, using a path variable and request body, and return the updated contact.
Review Spring Boot, a Java-based framework for backend apps, and its controller, service, and repository layers managing data flow. Use dependency injection and rest controller annotations to build apis.
Learn how Spring Security acts as the gatekeeper of a Spring Boot application, intercepting requests to authenticate and authorize before they reach controllers and APIs.
Create a spring boot 4 project on start.spring.io using java and maven, add spring web, jpa, validation, security, lombok, and mysql or postgres for task manager app with auto-created tables.
Open the Spring Boot project in IntelliJ, create a task_manager branch, install dependencies, run on port 8080, and note data source URL error for connecting a database in next lecture.
Navigate to mysql.com, go to downloads, download the MySQL community server and MySQL Workbench, then optionally install the MySQL shell; configure a username and password to connect.
Install PostgreSQL on Windows or macOS using the EDB installer or PostgreSQL app, connect with PgAdmin to manage the database, and explore setup guides for PostgreSQL and MySQL.
Learn how to connect a Spring Boot 4 application to a MySQL database by configuring pom.xml dependencies, application.properties, and a local database named task db, then run and test.
Connect a Spring Boot application to a Postgres database by adding the Postgres dependency and updating pom.sml. Configure spring.datasource.url, username, and password in application.properties to verify the connection.
Set spring.jpa.hibernate.ddl-auto to update to let Hibernate auto-update database tables from entity changes during development; in production use none or validate.
Structure your Spring Boot project into layers—repository, controller, and service—and create packages for dtos, enums, models, exceptions, and security to accelerate development.
Create a task entity class mapped to the tasks table with id, title, description, category enum, isCompleted, and a user relationship, using Lombok data and identity generation.
Define a one-to-many relationship where a user has multiple tasks using mappedBy, join column, and cascade all. Apply json managed reference and json back reference to prevent circular serialization.
Learn to create user DTO and task DTO in a Spring Boot app, configure serialization with json include not null to omit passwords, and manage DTO relationships for clean responses.
Run the app to automatically create users and tasks tables in Postgres via JPA mappings, illustrating table and column generation. This session previews Spring Security setup in the next lecture.
Create a security config class and a security filter chain bean to secure requests. Enable web and method security, configure cors with origins, methods, headers, credentials, and disable CSRF.
Configures spring security in a spring boot 4 app with session management, authentication, and route protection; enables login and register as permitAll and includes bcrypt password encoding and logout.
Define a task repository interface extending JPA repository for Task with long id, enabling find by user and find by user and category to fetch a user's tasks by category.
Design and implement a Spring Boot registration and login service with interface and implementation, include email check, password encoding, role handling, and API responses.
Authenticate users with the authentication manager using email and password from the login request, populate the Spring Security context, and issue a session cookie for a successful login.
Explore building a Spring Boot auth controller to register and login users, validate input with @Valid, and manage sessions via cookies by integrating a custom user details service.
Explore end-to-end registration api testing using postman, validating /api/auth/register on localhost:8088, handling default role user, admin role with capitalized keys, and duplicate email errors.
Test the login API by posting email and password to api/auth/login, observe 401 for unauthenticated routes, and note session-based authentication that resets on restart.
Create task controller as rest controller /api/tasks. Use requireR constructor to inject a task service and handle a post returning a task dto via authentication to obtain the user email.
Implement a task service that retrieves user tasks by category, maps them to DTOs, and returns clear API responses. Include delete and authorization checks, and support toggling task completion.
Implement controller methods to fetch tasks by user category with an optional category parameter and authentication, and delete or update task status via path variables and put mappings.
Master tasks management api tests by validating get all tasks by user and category, toggle completion, and delete tasks, while debugging task service mappings and authentication flows.
Build a spring boot 4 user controller with rest annotations and autowired user service, exposing admin-only get all users, get my profile, and update profile via authentication and user DTO.
Configure a logout endpoint at /api/auth/logout in spring security that deletes cookies and returns 200, usable with any http method. Verify by logging in again and re-accessing account details.
Explore microservices and event-driven architecture, including Apache Kafka, Eureka server and client, and API gateway, while practicing JWT-based authentication, sending emails, and building a fintech microservice backend.
Explore microservice architecture and monolithic designs through an online banking scenario. See independent services—user, account, transaction, and notification—each with its codebase, database, and deployment, connected by API or event-driven communication.
Create the nova bank discovery service by scaffolding a Maven spring boot project on start.spring.io, add spring web, spring boot actuator, and Eureka server, then push to a GitHub repo.
Create a transaction service project on GitHub and configure a Spring Boot app with spring web, jpa, mysql and postgres drivers, security, validation, discovery client, actuator, kafka, and opu feng.
Connect the user accounts service to a mysql database by configuring application.properties with spring.datasource.url, server.port, and credentials; then create and connect to the database, observing discovery service issues.
Connect the user account service to a PostgreSQL database by configuring the Spring DataSource URL, creating NovaBankUsersAccountsDB, and enabling Hibernate ddl-auto to update on model changes.
Connect the transaction and notification services to their own databases, create transaction-db and notification-db, and set ports to 8082 and 8083.
Enable the Eureka server on port 8761, expose actuator endpoints, register the user account service with the discovery service, verify health via actuator, and enable instance IP addressing.
Set up the Eureka discovery service, register microservices, and monitor status with actuator metrics; configure discovery clients and restart services to reflect changes.
Configure the user account service for Kafka by setting the bootstrap server to localhost:1992, and define producer settings with string key serializer and JSON value serializer, enabling distinct event headers.
Organize an account service in Spring Boot by creating config, controller, service, repository, model, enums, security, Kafka, and exception packages, with entities planned next.
Define role entity for the user account service in Spring Boot 4, using @Entity and table roles, Lombok accessors, a builder, and an identity-generated id with a unique, non-null name.
Develop a generic api response and multiple dto objects for the users account service, implement user and account dtos with secure password handling and json configuration.
Explore how to design and implement auth and account service DTOs, including registration and login requests, authentication response with token, and admin user statistics and user-with-account DTOs.
Unlock the Power of Modern Java Development with Spring Boot 4 and Build Real-World Spring Boot Microservices and Automate Deployment to Cloud Like a Pro
This is not just another Spring Boot course.
This is a hands-on, production-focused backend engineering masterclass where you’ll build real applications using industry-standard architecture and deploy them to the cloud.
We don't just teach you to be a developer; we teach you the DevOps Architect mindset. You will build professional CI/CD pipelines and use Docker to ensure your 6-service banking system runs perfectly from your local machine to the AWS Cloud.
You will start from the fundamentals of Spring Boot and Spring MVC, then progressively move into advanced backend engineering concepts used by professional software teams.
The Journey: From Zero to Cloud Architect
This course is structured as a progressive journey. We start with the fundamentals and scale up to complex, distributed systems.
Project 1: Contact Management API
A deep dive into the Spring Boot 4 fundamentals. You will master the Layered Architecture (Controller, Service, Repository) and learn how to build clean, RESTful endpoints with professional validation.
Project 2: Task Management System
Shift into high gear with complex business logic. You will work with JPA/Hibernate, relational database mapping (MySQL/Postgres), and service-level integration.
Project 3: The 6-Service Banking Ecosystem
This is the core of the course. You will architect a distributed system from the ground up:
User Service: Secure Authentication & Authorization with Spring Security & JWT.
Account Service: Managing financial data and transactions.
Notification Service: Real-time Mail Sending with custom HTML templates.
Discovery & Routing: Using Eureka Server and API Gateways for seamless communication.
Event-Driven Core: Utilizing Apache Kafka for asynchronous, high-performance messaging.
Infrastructure: Load Balancing, RDS Cloud Databases, and Security Group configurations.
The DevOps & Cloud Edge
We don't just write code; we ship it. You will learn the modern "DevOps" workflow used by senior engineers:
Containerization: Wrap your services in Docker for environment consistency.
Cloud Infrastructure: Provision AWS EC2 servers and RDS instances.
Automation: Build CI/CD Pipelines to automate your testing and deployment process
What You Will Master:
We cover the entire modern Java ecosystem. No stone is left unturned:
Core Framework: Spring Boot 4, Spring MVC, and the Layered Architecture.
Data Excellence: Hibernate/JPA with PostgreSQL and MySQL. Master AWS RDS for cloud databases.
Advanced Security: Spring Security 7+ implementation, JWT (JSON Web Tokens) for stateless authentication, and granular Authorization.
Microservices Ecosystem: Service Discovery with Eureka, API Routing, and Load Balancing to handle high traffic.
Event-Driven Architecture: Decouple your services using Apache Kafka for high-performance messaging.
DevOps & Deployment: Containerize your apps with Docker. Set up CI/CD Pipelines for automated testing and deployment.
AWS Cloud Mastery: Take your apps live! We cover EC2 instances, AWS Security Groups, and Cloud Configuration.
Enterprise Features: Automated Mail Sending with custom HTML templates for user notifications.
Why Choose This Course?
Unlike other courses, we don't stop when the code runs on your machine. We focus on Production-Ready code. You will learn how to handle security vulnerabilities, how to scale services using Load Balancers, and how to automate your entire workflow so that every "Push" to GitHub automatically deploys to the Cloud.
By the end of this course, you will have a professional portfolio featuring a complex Banking Microservices system that will make your resume stand out to top-tier tech recruiters.
SUMMARY OF WHAT TO EXPECT IN THE COURSE;
What You’ll Build
A fully structured Contact Management REST API
A complete Task Management Service
A real-world 6-Service Banking Microservices Application
Event-driven systems using Kafka
Production-ready cloud deployment on AWS
Core Concepts You’ll Master
Spring Boot fundamentals
Spring MVC architecture
Controller Layer best practices
Service Layer design
Repository Layer with JPA
MySQL & PostgreSQL integration
REST API design principles
Security & Authentication
You will implement:
Spring Security
Authentication & Authorization
Role-based access control
Session Cookies
JWT-based security
Secure API protection strategies
Microservices & Distributed Systems
Microservices architecture
API routing & Load balancing
Eureka Server (Service Discovery)
Event-Driven Architecture
Apache Kafka integration
Inter-service communication
Fault tolerance strategies
Advanced Backend Features
Mail sending with Spring Boot
Custom HTML email templates
Asynchronous processing
Production logging practices
Cloud & DevOps (Real Deployment)
You will learn how to deploy like a real DevOps engineer:
Docker & containerization
Dockerizing Spring Boot apps
AWS EC2 setup
AWS RDS configuration
AWS security best practices
Load balancing in AWS
CI/CD pipeline setup
Automated deployment workflows
Tools & Technologies Covered
Spring Boot
Spring MVC
Spring Security
JPA / Hibernate
MySQL & PostgreSQL
Docker
Kafka
AWS (EC2, RDS, Security Config)
CI/CD pipelines
Github Actions
Microservices architecture
Who This Course Is For
Backend developers wanting to master Spring Boot
Developers transitioning into microservices
Engineers preparing for backend interviews
Developers who want to deploy real systems to AWS
Anyone who wants production-level backend skills
Backend Engineers aiming to master AWS Cloud Deployment and DevOps.
Java developers who want to transition into Microservices.
Engineering and Computer Science Students.
By the End of This Course
You won’t just understand Spring Boot.
You’ll be able to:
Architect scalable backend systems
Build secure microservices
Implement event-driven systems
Containerize applications
Deploy and automate production-ready applications on AWS Cloud and Other Platforms.
This course gives you real-world backend engineering experience, not just theory