
Learn microservices with Spring Boot, building data access, services, presentation, and integration layers. Implement restful web services, email sending, J free charts, and flight reservation workflow (registration, search, booking, check-in).
Explore how this hands-on Java project development course using Spring Boot is organized into lectures with quizzes and assignments, plus setup with Java 8, Spring Tool Suite, MySQL, and Postman.
Start with core Java fundamentals, then build web skills with JDBC, Servlets, and JSP, and progress to Spring Framework and Spring Boot, including Spring Data JPA and RESTful services.
Install the latest Java JDK and Spring Tool Suite, then configure STS to use the JDK home directory and ensure the standard VM points to Java SE.
Install and configure MySQL and MySQL workbench through a simple, step-by-step process, set a root password, and connect to the server to run SQL statements on port 3306.
Connect to your MySQL server using MySQL Workbench, test the connection, and create a database named my DB using the host name my local machine, port 3306, and root user.
learn how to download and install the MySQL community server on Windows, including prerequisites like Visual C++ runtime, choosing server-only installation, configuring root password, and verifying the server is up.
Install mysql workbench on windows to connect to a local or remote mysql server, then use the query window to create a database.
Install Postman, launch the app, and learn to test microservices restful api by sending http methods, adding headers, json bodies, and basic authentication.
Download the completed projects from the resource section, unzip the file for reference, and compare the Maven projects to troubleshoot your own work in STS.
Download assignment solutions for reference, but complete all assignments from scratch, using the lecture resources to download a PDF with the code and configuration for your Spring Boot project.
Access the resources section to download a zip with notes from important lectures for this end-to-end project course. Use these quick references to review key concepts before interviews.
Delete the local repository in your user directory (.m2/repository) when you encounter Maven errors, then run Maven update project to pull dependencies and sync with the latest versions.
Explore how microservices replace monolithic apps by dividing into autonomous, focused services such as clinical, registration, claims, and bed management, each with APIs and networked communication.
Explore how microservices enable heterogeneous components communicating via rest APIs, letting modules like patient registration and bed management run on different technologies for scalable, robust systems.
Explore the four-layer java architecture—data access, services, presentation, and integration—covering dao interfaces and implementations, service layers, controllers, validators, utilities, and special view generation for excel or pdf.
Learn how dividing a Java application into data access, services, presentation, and integration layers simplifies code, ensures separation of concerns, and enables easy maintenance.
Learn how data access layer uses orm and Hibernate with Spring Data JPA to perform crud, and how services, presentation, and integration layers use mvc and restful web services.
Identify six key components in this course: model, idao, dao impl, i_service, service impl, and controller; explain their module-based naming and has-a relationships across layers.
Build the data access layer by modeling the Student class and creating a StudentRepository that extends CrudRepository, mapping fields to a student table with JPA annotations in Spring Boot.
Create the database schema for the data access layer by defining the student tab table in project db using MySQL Workbench, with id, s name, s course, and student fees.
Create a spring boot project in sts to implement a student data access layer with jpa and mysql, using the Student DAL artifact and com.bharath.DAL group, configured by application.properties.
Create a JPA entity model class named student with fields id, name, course, and fees, mapped to the student tab table using @Entity, @Table, @Id, and @Column.
Create the student repository by extending crud repository; Spring Data auto-generates the data access layer implementation at runtime to enable crud operations for the student entity with a long id.
Mark the student id field with @GeneratedValue from javax.persistence to let the JPA provider auto increment the value using generation type auto, letting the database handle it.
Configure the data source in the application.properties file by setting spring.jpa.show_sql to true, and the spring.datasource.url, username, and password for a mysql localhost:3306 project DB.
Upgrade your project to Spring Boot 2.4.1 to learn the changes; use generation type identity for entities, remove unused imports, and adapt tests, finder methods, and delete methods for 2.x.
Perform create operation of the crud cycle by testing a new student insertion with the repository save and auto-generated id, verified in the database using Spring Boot test and JUnit.
Fetches a student by id from the database using repository.findById, handles the optional result in reactive programming, and verifies the retrieval with a JUnit test run.
Demonstrate update and delete operations in Spring Data JPA by fetching a student, changing the fee, and deleting by id or entity only when changes occur, via JUnit tests.
Develop and manage a location web app with Spring Boot, implementing create, read, update, and delete operations for locations (id, code, name, type, urban or rural) using Thymeleaf templates.
Create a location workflow with create location.jsp form to capture id, code, urban or rural type, persist via Spring MVC to Java model using Hibernate, and return a success message.
Display all locations by clicking view all, load data with Spring Data and Hibernate, and render them in display locations.jsp as an HTML table using JSTL and expression language.
Implement a delete workflow in a project by dynamically generating delete links on display locations.jsp, sending the selected id to the server, deleting the record, and reloading the list.
Update location information via an edit column, fetch by id, pre-populate the form with code, name, and type, save via Spring MVC, and refresh the list.
Import location.sql into the Project DB and run the create location table statement in MySQL Workbench, defining id as primary key and code, name, and type as varchars.
Create the Location Web spring boot project in your IDE using a spring starter, with Maven packaging and Java 21, including Spring Data JPA, MySQL driver, Spring Web, and Thymeleaf.
Create a model class and map it to the database using JPA annotations in Spring Boot. Define fields id, code, name, and type, and generate getters, setters, and toString.
Create a location repository by extending Spring Data's CrudRepository for the location entity with an integer id, placed under the location.repos package.
Configure the data source by editing the application.properties to set the MySQL JDBC URL, database, username, and password. Enable SQL visibility by setting spring.jpa.show_sql to true to display Hibernate statements.
Create the services layer for the location module by defining a location service interface and its implementation, including save, update, delete, and get methods using the data access layer.
Mark the service class with the @Service and inject the repository via @Autowired, then implement save, update, delete, find by id, and find all using JpaRepository to return a list.
Download and set up Thymeleaf templates and the CSS folder for your Spring Boot project. Use Thymeleaf to render dynamic data in the create, display, and update location pages.
Configure the web app context path as /location web and disable thymeleaf cache for dynamic template loading, enabling localhost:8080/location web and the app's URLs.
Create a location with a unique id, a location code, and type on the create location screen. Save, view all, and edit or delete to perform create, read, update, delete.
Implement a Spring MVC create location flow: render create location.html at /show create, bind a location from the form, save via the location service, and display the saved id.
Test the create location flow by running the Spring Boot app on port 8080, submitting the location form, and saving records like Austin, Dallas, and Hershey to the database.
Display all locations demonstrates rendering database locations by retrieving them via the service and passing them to the display locations template for rendering in an HTML table.
Implement delete location in the location controller using get mapping, read id from request param, delete via service, then reload display locations with updated list.
Implement the update location flow by retrieving a location by ID, rendering the update location form with current details, and saving changes to refresh the display of all locations.
Develop the utility layer that houses cross-cutting code used across the data access, services, and presentation layers, including email sending, file copy, and XML parsing.
Create a Spring Boot email utility layer that sends emails when a record saves, using EmailSender, EmailSenderImpl, and EmailUtil, with Gmail host and credentials configured.
Add the spring-boot-starter-mail dependency to the pom.xml to enable email support in the locationweb project, revealing transitive email-related jars under Maven dependencies.
implement the utility layer by creating EmailUtil and EmailUtilImpl, using JavaMailSender and MimeMessageHelper to compose and send emails with toAddress, subject, and body.
Configure spring.mail properties in the application.properties to connect to smtp.gmail.com on port 587, set username and password, and enable starttls and authentication.
Configure Gmail as an SMTP server by enabling two-factor authentication, then generate an app password and paste it into your application.properties to authenticate.
Annotate EmailUtil with @Autowired and inject it in the LocationController to send an email after saving a location, calling emailUtil.sendEmail with the toAddress, subject 'Location Saved', and a descriptive body.
Test the utility layer by running the spring boot app, creating a location, and observing the email sent from the configured property email address as proof of the utility's function.
Learn to integrate open source APIs with Spring Boot by using JFreeChart to generate pie and bar charts from database data through a utility class.
Describe the low level workflow for the reports utility in the Locationweb project, including loading a dataset via LocationRepository and generating a pie chart with JFreeChart that renders as JPEG.
Add the jfreechart maven dependency to the locationweb project by editing pom.xml after the MySQL dependency, and paste the 1.0.19 snippet from the Maven repository.
Add a repository method in the location repository to query type and its count from location, grouped by type, using a JPQL query and returning a list of object arrays.
Create a report utility in the util package that generates a 3d pie chart from the dataset and saves it to a jpeg, by defining ReportUtil and implementing ReportUtilImpl.
Copy data into the default dataset, populate values with keys and doubles, create a 3D pie chart with JFreeChart, and save the report as a JPEG image with error handling.
Add a /generateReport endpoint in LocationController that uses LocationRepository.findTypeAndTypeCount, feeds data to ReportUtil.generatePieChart, saves the image via ServletContext RealPath, and returns report.jsp.
Test the report generation in a Spring Boot app by generating a 3D pie chart with legend and tooltips, saving as jpeg, and displaying via Thymeleaf.
Explore how microservices communicate through an integration layer to stay loosely coupled. See RESTful web services and messaging enable interoperable, cross-language communication using Spring Boot.
Explore how REST principles and HTTP implement a uniform interface, resource URIs, and HTTP verbs to perform CRUD operations.
Create a RESTful LocationRESTController in Spring Boot, annotate with @RestController, map to /locations with @RequestMapping, and begin implementing CRUD operations.
Implement a getLocations method in LocationRESTController to return all locations from locationRepository.findAll, injected with @Autowired. Expose it as a get /locations endpoint that serializes the list to json.
Launch the Spring Boot app, send a GET request to localhost:8080/locationweb/locations with an Accept header of application/json, and inspect the JSON array of all locations.
Implement the createLocation method mapped to http post, use @RequestBody and locationRepository.save, then test with Postman for a 200 ok Denver entry.
Learn how to update an existing location using a put request in Spring Boot, persisting changes with the location repository and returning the updated location.
Pass a unique id via the url to delete a location, using @DeleteMapping and @PathVariable to call locationRepository.delete, test with Postman for a 200 ok and removal from the database.
Expose a get location by id rest endpoint in Spring Boot, returning a location as JSON using findOne; map the id with @GetMapping and @PathVariable, tested via Postman.
Build applications for flight reservation and check-in, enabling users to search flights, view results, select a flight, and complete reservations with passenger and credit card details, producing a reservation ID.
Create a Spring Boot flight reservation project by downloading templates and CSS, configuring dependencies (MySQL driver, Spring Data JPA, Spring Web, Thymeleaf), and adjusting properties.
Create flight, passenger, and reservation model classes as JPA entities with id fields and associations; refactor by using an abstract mapped superclass to reuse the id and getters/setters.
Define the one-to-one relationship between reservation, passenger, and flight using Jakarta Persistence's one-to-one annotation, then create flight, passenger, and reservation repositories as JPA repositories to enable CRUD operations.
Create the flight reservation database schema by importing the flightReservation.sql file, and build the Reservation database with user, flight, passenger, and reservation tables, including foreign keys and auto increment ids.
Load test data into the flight table from the provided flights.sql, inserting records into the reservation database to enable flight search testing in upcoming lectures.
Render the find flights page in a Spring Boot app by creating a flight controller, mapping the find flights URL to a Thymeleaf template, and launching on port 8080.
Implement a Spring Boot controller method to handle the search form post, accept from, to, and departure date, call the repository, and render the display flights page using Thymeleaf.
Implement a JPQL query in the flight repository to find flights by departure city, arrival city, and departure date using @Query and @Param. Hibernate translates JPQL to SQL for display.
Implement the show complete reservation flow in spring boot by fetching flight details via the flight repository using the flight id and rendering a page with passenger and card details.
Create a reservation request data transfer object in Spring Boot to capture flight ID, passenger details, and credit card information, with all fields as strings and getters and setters.
Discover how to implement a reservation flow by building a reservation request with flight id, passenger and credit card details, and persisting it through a service that uses multiple repositories.
Implement the reservation service interface and its book flight method, injecting repositories to create and save a passenger from the request, then save the reservation with flight and passenger.
Inject the reservation service into the reservation controller, implement the complete reservation method with post mapping, and pass msg and the reservation id to the reservation confirmation view.
Build a flight reservation flow by searching flights, selecting one, and submitting passenger and payment data to book flight. The system saves the reservation and returns a unique reservation id.
Explore the integration layer requirements for flightreservation, showing how the flightcheckin app retrieves a reservation by id and updates it via restful endpoints like findReservation and updateReservation.
Create a reservation rest controller to expose findReservation and updateReservation endpoints for the flightreservation app. Inject the reservation repository and map urls to return or update reservations as json.
Implement the updateReservation REST service using a ReservationUpdateRequest dto that wraps id, numberOfBags, and checkedIn. Retrieve the reservation by id, apply updates, save the entity, and return the updated reservation.
Test rest services by using Postman to get and post reservation data, verify @requestbody usage, and update a reservation to set checkedIn true and 2 bags, confirming database changes.
Enable cross origin support by annotating the Spring controller with @CrossOrigin to let the Angular app on port 4200 access restful services on port 80, avoiding cross origin errors.
The ONLY course that covers the End To End Java Project Development and Also use Angular and React for frontend development while working on those projects.
---
Sample of the reviews:
whether fresher/experience this tutorial is amazingly explained practically. Sir Bharath Thippireddy is so fluent in his explanations that sometimes we fail to realise that we have learnt the complex frameworks so easily just bcz the way he explains in ease! I feel so grateful to b his student. Thanks alot sir! - Vijay Bundele
Respond
I liked this a lot, its wonderful... The way of step by step teaching, presenting the content in very organized way which is too good... also the content is huge which include lots of good information... Being first time learner i learned a lot from this course. Thanks. - Md Modabbir Hussain.
Been a great experiencie. Bharath has been very helpful also, whenever asked any question. The videos are very explicit and he walks through everything. - Gonçalo Faustino
---
All source code is available for download
Responsive Instructor - All questions answered within 24 hours
Professional video and audio recordings (check the free previews)
----
Do you have the knowledge of java and spring framework but do not know how to create an end to end java project, then this course is for you. If you are an experienced java developer who wants to fill in any gaps in your knowledge of creating an enterprise java application then this course is for you too.
Spring is the most widely used framework in the industry today. Spring Boot makes it super easy to create production ready java applications. You will start this course by learning what micro services are, the different layers that are a part of every java application and the spring modules that should be used across these layers and the ten key classes you will create no matter how many java application you create. You will implement one layer at a time working hands on. You will then create two micro service applications using all the knowledge you gain from those sections.
The goal of this course is to help you master the concepts of micro services, layers in a java application and java project creation and build an end to end application while exploring the various features of spring. By the time you finish this course, you will have gained the understanding of Java Project Development, Data Access Layer Creation using Spring Data, Presentation Layer Creation using Spring MVC, Utility Classes and more. You will also create REST web services and consume them through the integration layer. You will also implement non functional requirements like logging, security, deployment and more.
What Will I Learn?
Master everything required to build an end to end Enterprise Java Application
Update to working with Latest Spring Boot 3.X
Understand the different layers that make up a Enterprise Java Application
Create a data access layer in two simple steps
Create the Presentation and Services Layers for your application
Develop Utility Classes
Learn how to send emails form your applications
Use third party libraries in your applications
Create two end to end mini applications
Create a AngularJS front end for the Java backend
Learn how to enable logging
Implement Security
Learn the two different ways to deploy your application
All in simple and easy steps