
Welcome to Spring Boot 3.0 and Spring 6.0 Frontend and Backend Development using the Software lifecycle, SDLC
Explore planning a vendor collection system from the development side, outlining roles, using a queue to prevent lost messages, and persisting data to MongoDB NoSQL.
The Requirements have been attached to this lecture for download and reference.
Install and run MongoDB in a docker container using docker run, detach mode, and port mapping (host port to container 27017), naming the container, and pulling mongo:latest from docker hub.
deploy rabbit mq with the management image on docker desktop, pull from docker hub, and run a detached container named spring rabbit mq, exposing ports 15672 and 5672.
adopt an agile iterative approach with two-week releases for QA, using daily scrum meetings and a Scrum master to manage work and roadblocks, with Jenkins verifying unit tests.
Examine the 10,000-foot design of a vendor management system and show how a Spring Boot 3 frontend producer writes JSON to RabbitMQ, while a backend consumes it to MongoDB.
Master RabbitMQ architecture by wiring publishers to exchanges, then bindings or routing keys to queues; code against producers and consumers with MongoDB and Spring Data, and test-driven development during design.
Create your first Spring Boot 3 project and configure RabbitMQ with five exchanges, building producer and consumer while leveraging auto-configuration, component scanning, and starter dependencies for a convention-driven backend.
Explore RabbitMQ exchanges, queues, and bindings, starting with the direct exchange and its routing key, and learn how five beans—exchange, queue, binding, message converter, and rabbit template—configure producers and consumers.
Build a spring boot rabbitmq producer for a direct exchange, with queues and bindings, and expose a rest endpoint to send producer messages as json.
Create a direct exchange consumer in Spring Boot, configure RabbitMQ, define queues A and B with bindings, and implement a RabbitListener to process messages.
Build a spring boot 3 producer for a fanout exchange in RabbitMQ. Configure two queues, bindings, and a Jackson message converter to broadcast messages via a REST endpoint.
Build a fan-out consumer in Spring Boot, binding queues A and B to a fan-out exchange and logging messages from both using a Rabbit listener and Jackson message converter.
Learn how topic exchanges route messages to multiple queues using binding keys and pattern-based routing, with a producer sending messages to an exchange and broadcasting to consumers.
Build a Spring Boot topic consumer to receive messages from topic queues using RabbitMQ, with a controller, consumer message model, configuration, and bindings, tested on port 8081.
Develop a headers exchange producer using Spring Boot, configuring a headers exchange, marketing and inventory queues, and header-based bindings; send json messages via rabbit template.
Build a Spring Boot 3 producer using RabbitMQ's default exchange with two queues, inventory and marketing, bound by queue-name routing keys, via a RabbitTemplate and Jackson JSON converter.
Explore Spring Data get by id using path variable and optional in a Spring Boot 3 API; implement find by id, handle not found, and return json via response entity.
Learn spring data repositories and custom queries like find by name starts with; implement a get by name starts with endpoint with a data service and response entity.
Add an age field and implement get by age between using Spring Data repositories and a query annotation, exposing a /data/age endpoint with minAge and maxAge.
Implement a get all persons endpoint that returns all records, supports field projection to include or exclude fields, and returns not found when the result is empty.
learn to update a person by id with put in Spring Data, including path variable, request body, error handling, and a utility mapper to merge fields safely.
Create a delete by id endpoint using a delete mapping and a path variable id in Spring Boot. Return an acknowledged result with the deleted count via ResponseEntity.
This lecture demonstrates implementing pagination for a find all operation by converting the list to a page, passing a pageable with page and size, and using page requests.
Explore test driven development (TDD) and unit testing with JUnit, learning how requirements drive tests, not code, and how to write failing tests first and then code to pass.
Demonstrate test-driven development to verify the build person utility by creating original and updated persons with a builder, updating by ID in MongoDB, and asserting updated fields while preserving others.
Learn to unit test a mongo repository by mocking with Mockito to avoid real database calls, using in-memory or mock bean strategies for methods like find by name starts with.
Learn to write unit tests for a controller layer using web mvc test, mock mvc, and mockito to verify post requests return a 200 status.
Develop Spring Boot unit tests for a controller with MockMvc, covering post, get by id, get by name, get all, update by id, and delete.
Demonstrates building and running a Postman-based integration test suite for a MongoDB-backed API, using environments, collections, and tests to post, get, update, and delete a person.
Execute integration tests for get all persons with Postman, verifying 200 status, json payload with content and pagination, and test a put update for Jane Fonda.
Develop integration tests for a delete by id operation using Postman, verify a 200 status and acknowledged deleted account, and cover get by name starts with and by age between.
Explore the spring front-end model using time leaf templates, with a controller and service calling an api producer via rabbit template, and rest template fetching vendors for display.
Build a spring boot 3 front-end with time leaf, add web, lombok, and rabbitmq, scaffold controller, model, service, and api, and render an index view.
Pull bootstrap templates from bootstrap.com and integrate them into a thymeleaf project, organize templates and static assets, and create reusable nav and footer fragments using thymeleaf insert.
Create backend unit tests for a person API using a builder and all-args constructor, with Mockito to mock posts and validate response payloads in a Spring Boot test.
Learn to bootstrap a spring boot 3.0.3 backend with maven, rabbitmq, and mongo, stub essential packages, and configure config, models, controllers, repositories, services, and 8081 server port.
Learn to document a spring boot 3 backend with open API three and swagger UI, wire dependencies, run locally, and test endpoints with try it out and JSON responses.
Discover Spring Boot Actuator for health and other endpoints to monitor and manage apps, expose health, beans, env, and logs, and enable DevOps visibility across environments.
Create a Spring Boot front end app using Maven, Java 17, and Thymeleaf, wiring RabbitMQ with a Vendor API and Vendor Producer, and stub out configuration, controllers, models, and utilities.
selects a free bootstrap html template, integrates thymeleaf includes for nav and footer, and configures index and about pages with thymeleaf inserts in a Spring Boot frontend.
Finish the about page and implement a controller to fetch vendors with a rest template, using page and size request params and properties-configured get URL.
Implement frontend pagination by deriving total pages from the response, building an integer pages array, and iterating to render page links with styled buttons that highlight the current page.
Post vendor data to a direct exchange using RabbitMQ, configure queues, exchange, bindings, and a message converter, then persist the payload to MongoDB as backend consumes.
Regex for Zip code, Phone Number, and Email
zip code: regexp="^[0-9]{5}(?:-[0-9]{4})?$"
phone number: regexp="^((\\(\\d{3}\\))|\\d{3})[- .]?\\d{3}[- .]?\\d{4}$"
email: regexp="^[\\w!#$%&’*+/=?`{|}~^-]+(?:\\.[\\w!#$%&’*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$"
Finish frontend validation by building a field errors map from the binding result, using field names as keys, and render each default message under its input via the model.
Describe design changes triggered by a business demo, add edit and delete buttons to fix typos and remove duplicates, and implement backend error handling with a RabbitMQ dead-letter queue.
Implement a delete by id endpoint in the Spring Boot backend using a path variable and response entity, with exception handling and json status.
Implement exception handling for the get vendors endpoint by adding a try-catch, logging errors, and returning HTTP 500 with a formatted message; test with postman, and prepare front-end updates.
Learn how to translate wireframes into front end HTML, CSS and JavaScript, implement edit and delete vendor actions with IDs, and connect to the backend via swagger documented endpoints.
Rebuild the frontend home page to add edit and delete vendor actions, wiring Thymeleaf links with vendor IDs for Bootstrap-styled buttons.
Implement the frontend edit vendor flow, call the vendor API, retrieve a vendor by id, map JSON to a vendor object, and render the edit page.
Render edit vendor page with thymeleaf, populate fields from vendor model, post updates using post vendor, including hidden id field, and troubleshoot zip code handling on the back end.
Develop the delete vendor by id flow, calling the backend delete endpoint with the id path parameter via the frontend service, log deletion, and redirect to home; plan tests next.
Learn in the SDLC testing phase to write unit tests with JUnit and Mockito for the utility, then plan service, controller tests and Postman integration tests.
Continue testing the service phase by writing unit tests for post, get, and delete operations on vendors, using mock beans and Mockito to verify calls and results.
Demonstrates backend testing of a vendor controller via post and delete by id, uses Mockito to verify calls, runs and passes unit tests, and previews future integration tests with Postman.
Initialize a git repo and push vendor API to GitHub, add a readme, and use Postman to run integration tests on the /vendors endpoint, verifying 200 status and payload fields.
Develop unit tests for the vendor API frontend, implementing find vendor by id and delete vendor with id handling, json response checks, and prep for vendor service post tests.
Learn to unit test a Spring Boot frontend controller with Web MVC tests using Mockito, covering home, about, add, edit, delete and post flows with model and binding results.
Initialize a git repository, track and commit frontend source code, connect to a remote on GitHub, and push changes as part of SDLC phase 5; then explore selenium frontend tests.
Learn automated frontend testing with Selenium WebDriver for a locally hosted app. Identify web elements by id, name, css, or xpath, and simulate clicks, form fills, and errors.
Execute selenium testing for the vendor app by automating interactions with the home and about pages using a page class structure, web driver, and page factory initialization.
demonstrates a frontend selenium test flow for adding, editing, and deleting a vendor using a page object model, including by name element selection and form automation.
Demonstrates frontend selenium testing for the edit vendor flow, using assertions to verify page titles and navigating to the last added vendor with click and scroll handling.
Demonstrate frontend selenium testing by fixing a not-clickable edit vendor button on the edit vendor page via scrolling to bottom with a JavaScript executer and validating zip code errors.
Demonstrates frontend selenium testing to edit and delete vendors across pages, using a page object model, zip-code updates, and validation of navigation to the vendor portal.
Clarify the definition of done in software development, detailing zero high bugs, all unit tests passing, automated and manual tests, user acceptance testing, and updated documentation before implementation.
Implement the final stage by deploying apps in Docker containers, wiring them to MongoDB and RabbitMQ via non-localhost IP addresses, and updating properties for back-end first.
Deploy the vendor API to Docker by packaging with Maven, creating a Docker file, configuring host and RabbitMQ properties, and exposing port 8081.
Finish SDLC phase 6 by pushing final project changes to GitHub, updating docker files and maven builds, and validating selenium tests, while reinforcing best practices to avoid adding jar files.
This course has 113 videos covering over 21+ hours of content.
You will learn the complete software development life cycle creating a Full Stack Spring Boot 3.0 Application using tools like:
IntelliJ Idea
Docker
Spring Framework 6.0
RabbitMQ in Docker
JUnit (Unit Test and Mocks)
Spring Boot 3.0
MongoDB in Docker
Selenium
Postman (Integration Test)
What will we create:
Understanding of the Software Development Lifecycle. What happens behind the scenes in a Fortune 500 company in the Information Technology department. Gain understanding of the players involved who make up a software team and their roles with respect to the software development lifecycle.
You will create a consumer backend service to consume messages on the queue our application is listening for. We will write that message to our MongoDB database.
You will create the frontend using Spring and ThymeLeaf, HTML, CSS and JavaScript so we can produce messages and put them on the queue.
We will Unit Test our application and create a continuous integration / continuous delivery workspace to verify our code is in a stable build.
We will maintain our code using GitHub.
By the end of the course you will have complete understanding of the software development lifecycle and have complete confidence using the tools in this course to create a full tack application using service oriented architecture in any workplace.