
Explore how Spring Boot uses convention over configuration, with pre-configured settings and starter dependencies, and customize via properties or yaml, enabling a standalone web app with an embedded server.
Create a new Spring Boot project via the Spring Initializer, selecting Maven and Java, and generate post.zip; next, configure Java and IntelliJ to run locally.
Add Spring Boot starter web dependency and run the embedded Tomcat in the post application class on port 8080. Configure application.properties to change port to 9090, demonstrating convention over configuration.
Create an announcement controller with rest controller annotation and expose get, post, put, and patch endpoints. Demonstrate spring boot bean injection and use postman to call app on port 8080.
Learn how path variables act as placeholders to capture ids in endpoints. See an example with the announcements endpoint that uses a path variable id to fetch a specific announcement.
Learn how request bodies replace complex query params by posting an announcement with text, author, and votes. Use Lombok to reduce boilerplate and map JSON via @RequestBody.
Capture and log a unique request id from http headers in a spring boot app. Learn to inject HttpServletRequest, read header with getHeader, and log the id to trace requests.
Manipulate the response body and headers in Spring Boot using response entity to control http status. Build and return a body with headers including a unique id.
Download and install postgres with the windows x86_64 installer, use pgadmin to configure Postgres 14 or 15, and set the superuser password 12341234 on a development port like 5433.
Connect a Spring Boot app to a PostgreSQL database by adding Spring Boot Starter Data JPA and the PostgreSQL driver, and configuring application properties. Validate that tables align with entities.
Use Flyway, a database migration tool for Spring Boot, to manage versioned schema changes via scripts (v1, v2), configure pom.xml and application properties, and track migrations in the Flyway schema history.
Map a Java class to the announcement table using entity and table annotations, define schema and columns (author, text, email, votes), and configure id generation via a sequence.
Explore CRUD operations through a repository layer, using Spring Data JPA to perform create, read, update, and delete on the announcement entity with JPQL, derived methods, and native queries.
Refactor into a controller service repository pattern by adding an announcement service interface and implementation, then inject service into controller and implement find by id, find all, and save.
Learn how MapStruct maps between announcement DTOs and entities and back. See how to expose DTOs in endpoints, ignore IDs for create, and configure the mapper in a Java project.
Learn how to manage database operations with Spring Boot using the transactional annotation from Jakarta transaction to ensure rollback on errors, keeping creates and related data consistent via Hibernate.
Learn how to centralize exception handling with a controller advice in Spring Boot, throwing a custom not found exception for missing announcements and returning a 404 with a generic message.
Implement logging with log4j2 using lombok's @Log4j2 at the service level, and use log.info to track get announcement by id and log not found errors.
Explore aspect-oriented programming with AOP logging in Spring Boot, using pointcuts to intercept methods, log call details, and separate logging from business logic.
Explore inter-service communication with Spring Boot via REST APIs by building a second app that exposes a list endpoint and returns three commands, while refactoring the first app to announcements.
Learn how Spring Boot apps communicate over HTTP using RestTemplate and Feign client, with Feign offering a simpler, boilerplate-free approach for inter-service communication while RestTemplate remains widely used but aging.
Demonstrate calling the comments service from the announcements service with a Feign client to fetch an announcement and its comments through a unified endpoint.
In this part, I only scratch the surface when it comes to unit tests. If you want a deep dive into this matter, I invite you to follow my free course entitled "Guide to write meaningful unit tests". I added a link under "Resources".
Build and explore a Spring Boot application from scratch, mastering its familiar structure and rest endpoints. Integrate Postgres, handle errors, implement logging, and enable Feign-based service communication with testing.
Unlock the key to constructing modern Spring Boot applications with ease by following this short and concetrated course that puts emphasize on code structures that you are going to use 99% of times within a Spring Boot App!
Instead of losing many hours by following in-depth courses and then forgetting most of the information that you see there, you can get up to speed by seeing the skeleton structure that most of the modern applications use. Only then you can truly start to gain and understand in detail knowledge and add it on the top of this skeleton.
Gain a comprehensive overview of the entire app-building process without getting lost in complex details. Learn how different components fit together and understand the big picture before diving deep into specific aspects. Master the fundamentals and confidently navigate through Spring Boot framework.
This course presents the following topics:
Code Structuring Best Practices: In our course, you'll gain invaluable insights into code structuring techniques for modern apps, ensuring your projects are well-organized and maintainable.
Common Functionality Implementation: Discover how to efficiently implement common functionalities that will be used in 99% of your projects, saving you time and effort during development.
REST Endpoint Creation: Master the art of creating REST endpoints, enabling seamless communication between your application and clients for a smooth user experience.
Database Integration and Data Persistence: Learn the ins and outs of integrating databases and achieving reliable data persistence, allowing your app to securely store and retrieve information.
Robust Error Handling: Develop robust error handling strategies to gracefully handle unexpected situations and provide meaningful feedback to users, enhancing the stability and user-friendliness of your app.
Logging: Explore the power of logging to gain valuable insights into your application's behavior, troubleshoot issues, and improve overall system performance.
Service Communication with Feign Client: Learn how to facilitate communication between Spring Boot services using Feign Client, enabling seamless interaction and cooperation between different parts of your application.
Testing: Get a glimpse of the art of testing a Spring Boot app with both integration and unit tests.
Enroll in this course and equip yourself with essential skills to build modern, high-quality Spring Boot applications that meet industry standards and get insights into today's competitive market.
I put all my heart into creating this course. I'm sure that anyone who watches it will reap great benefits in the long run. It's always best to get the overview first, and only after that can you start zooming in on the details. That is why I believe this is the perfect course for the start of your journey.