This course gives you hands-on experience in building real-world software projects using modern stacks like Java, Spring, Spring Boot, Hibernate, JPA, and RESTful web services. You’ll learn how these technologies work together, explore design patterns, ORM, and layered architecture, and implement features like API documentation, health monitoring, and code quality checks. With practical tools like Swagger, Sonar, Maven, and Postman, you’ll develop a production-ready Property Management System, gaining the skills to create applications that end users can rely on.
Who should take this course
This course is designed for Java developers, backend engineers, and software professionals who want to build scalable and efficient applications using Spring Boot and JPA. It’s also suitable for students and beginners familiar with Java who wish to learn how to develop RESTful APIs, manage databases, and implement persistence in modern enterprise applications.
What you will learn
Create production-ready application in a layered architecture
Study about Swagger API documentation and Maven build management tool
Get hands-on knowledge to solve code quality issues using the Sonar Scan tool
Understand debugging techniques for multi-layer application
Test REST API with Postman client and application monitoring using Actuator
Course Outline
Introduction Setup and Concept Building
Course Overview
Software Installation
Generating Spring Boot Starter Project
Walkthrough of Spring Boot Starter Project Files and Folders
Introduction to Spring Framework and Spring Boot
RESTful Webservices Http Methods Status Code Spring Boot Annotation
MVC Design Pattern Part-1
MVC Design Pattern Part-2
Understanding and Creating DTO
Understanding RESTful Webservice with Practical Example
Understanding RequestParam Annotation with Practical Code Example
Understanding PathVariable Annotation with Practical Code Example
Understanding Post Put Delete Annotation and ResponseEntity with Practical Code
Layered Architecture, ORM Framework and Creating New Property API
Save New Property Post Endpoint
Creating Service layer Dependency Injection Autowired Singleton Prototype
Understanding Layered Architecture and Need for Different Database in DTAP
Overview of Hibernate ORM Framework and JPA Specification
Understanding how ORM Framework Like Hibernate Work and Different Hibernate
Working on Entity class and Understanding Different JPA Annotation
Saving Property in DB with PropertyRepository
MVC Pattern
Added PropertyConverter for DTO to Entity
Sending Back the New Entity Along with Status Using ResponseEntity
GET, PUT, PATCH, DELETE Operation on Properties
Get All Properties
PutMapping and Full Update of a Property
Partial Update of Price or Description Using Patch Operation
Delete Property by Property id and Delete Mapping
Spring Profiles and Configuration Properties
Understanding about Spring Profiles
Implementing Spring Profile with Different DB Config for DTAP
Testing Profile Configuration for Different Environment Database
Reading Custom Config Properties Inside Java Class
Git and GitHub
Setting up Git and GitHub for our Local Project
Committing and Pushing our Local Code Changes to GitHub Server
Connecting IntelliJ Editor with GitHub
Important Git Operations that Developer Must Know
User Login and Registration, and Sonar Analysis
Understanding User Login and Registration
Creating UserEntity and UserRepository
Creating UserService Interface and DTO
Working on UserService Impl
Working on User Converter Layer
Completing the User Registration Flow
Test User Registration Functionality
JSONIgnore and JsonInclude Annotation
Sonar Analysis and Git commit
FindBy and JPQL Queries
Creating Login REST API Endpoint and Integrate with Service Layer
Testing User Login Functionality
AOP and Error Handling
What is Aspect Oriented Programming (AOP)
Creating the Error Model
Creating Custom Exception Class
Creating Custom AOP Exception Handler
Throw Custom Exception for Invalid Login
Testing the Invalid Login Attempt
Avoid Duplicate User Registration with Same Email
Testing Duplicate Registration and Committing Code to GitHub
Adding Field Level Validation Annotation
Custom Handler for Field Level Error Handler
Enabling Field level Validation with @Valid annotation
Logging with Logback and Pull Request Process
Overview of Logging and Logging Levels
Adding Logback xml Configuration and Logger Statements
Testing Logging with Different Profiles and Committing Code to GitHub
Raising Pull Request for Code Review
Swagger Automatic API Documentation
Understanding About Swagger API Documentation
Configuring Swagger Documentation
Exploring Swagger JSON from Consumers Point of View
Exploring Swagger UI and Accessing Different API Endpoints
Enriching Swagger Documentation with Extra Annotation
Produces and Consumes Application JSON
Application Health Monitoring
Monitoring with Spring Boot Actuator
Enabling Web and Jmx Endpoints for Monitoring
Different Types of Entity Relationship
Understanding Relationship in SpringData JPA
Adding Many To One Relationship in Property
Get the User from DB and Set to the Property Entity
Save Multiple Property Belonging to One User
Updating Controller Service Repository
Testing the Get All Properties for One User
FetchType Eager Versus FetchType Lazy
One to One Relationship
Creating Repository and Updating Logic in DTO and Service for Saving Address
Testing One to One Relationship
Upgrading SpringBoot Version 2 to Version 3
Why should we upgrade to SpringBoot 3
Upgrading Java 8 to Java 17
Upgrade pom to Springboot 3 and replace the javax imports
Upgrade Swagger 2 to Springdoc-openapi
Fixing logback and SLF4J with Springboot 3
Springboot 3 and MySQL database config fixes
Upgrade Actuator
Real World SpringData JPA Queries
findBy Query
findBy Contains Order By Query
findAllBy Query by via more than one entity
findBy Query with multiple attributes and operator
Pagination with SpringData JPA - CRUD vs JPA Repository