
Explore how the course is organized into sections with runnable code projects, blending theory with hands-on Spring Boot practice and challenges.
In this lecture, I help you identify courses and tutorials that teach outdated functionality that has been replaced by better alternatives, or that cover topics not needed in real life.
Learn how to download and install Oracle GraalVM JDK, choose a Java version, and add it to your path to compile and run Spring Boot 4 applications.
Here, I instruct you on how to import the course materials into your computer's integrated development environment.
Study Spring Boot to understand how it works, then use a large language model like GitHub Copilot to code on top of Spring Boot for speed.
Explore Spring Framework and Spring Boot, including Maven basics and wiring dependencies. Learn how Spring beans differ from Java objects and how dependency injection works.
Demonstrate Maven basics with pom.xml, spring-boot-starter-web dependencies, and Maven convention over configuration to streamline Spring Boot project setup and dependency management.
Explore how Maven manages a Spring project, using pom.xml, dependencies, and the spring-boot-starter-web dependency. Learn Maven conventions over configuration and how the project object model coordinates build and packaging.
Run the Spring Boot 4 application to launch GetStartedApplication, observe Spring beans creation (SloganController, CommandLineRunner), and return a JSON slogan at the root endpoint on port 8080 using Tomcat.
Compare spring beans with pojos, noting creation, configuration, destruction, and dependency injection by the spring inversion of control container, and explore spring boot benefits like starter dependencies and auto-configuration.
Explore the basics of a Spring Boot application, including beans, dependency injection, and key annotations such as @Bean, @SpringBootApplication, and @Controller, plus REST controllers and Maven builds.
Complete the first self assignment, explore the BeansController and its spring bean, and verify the @GetMapping('/beans') returns an array of strings after startup.
Explore the model-view-controller pattern with Spring MVC and Spring Boot, serve static HTML, then render dynamic content with Thymeleaf, and learn auto-configuration and default settings.
Run the second Spring Boot application on port 8002, serving static pages and a dynamic greeting via Thymeleaf templates, with a GreetingController parsing name and age.
Engage in a hands-on challenge by modifying a spring boot 4 app: return templates/greeting.html, switch the form to post, and compute age from birth date for under-18 templates.
Examine the model–view–controller design pattern with Spring MVC, and how Spring Boot auto-configures Thymeleaf to serve static and dynamic content.
Explore why input validation matters, examine JSRs and the Hibernate Validator, validate incoming data with Spring Boot annotations, add custom messages, sanitize input, and store messages in a properties file.
Explore how OWASP drives software security awareness and why injection flaws rely on weak input validation. Examine bean validation with JSR-380 and Hibernate Validator in Java.
Examine a simple Spring MVC app that accepts user input and validates it with standard bean validation annotations, displaying errors via Thymeleaf templates and binding results.
Run the Spring Boot 4 application to see a signup form validated with not blank, not null, and digits checks, plus custom date of birth validation and a signup-completed page.
Apply bean validation to enforce a valid email for the username using the correct Bean Validation 2.0 and Hibernate Validator annotations, and resolve the BigDecimal error while reviewing DayTimeFormat guidance.
Learn how spring-boot-devtools enables automatic server restarts on code changes, while non-java resources refresh without restart, using build project or recompile once, and leveraging IntelliJ save to trigger updates.
Explore object-relational mapping in Spring Boot 4 by linking two entities in an in-memory H2 database, with interfaces and generated implementations, plus a custom SQL and logging steps.
Map Java objects to relational database entities using JPA, compare object graphs to table-based data, and map POJOs with @Entity for ORM, including foreign keys and auto primary key generation.
Explore Spring Boot 4 with JPA and H2 in a non-web setup, using Person and Course entities, repositories, and a CommandLineRunner to demonstrate find, save, and delete operations.
Create a new JPA entity Enrollment with student, course, and enrollmentDate, and implement an Enrollment repository method to fetch February enrollments for a course and inspect the proxy bean.
Explore how Hibernate generates vendor-specific SQL from JPA queries, see how a proxy bean translates repository methods into SQL, and learn to enable SQL logging to debug and optimize queries.
Explore REST concepts, resources and URIs, HTTP verbs, and how to map requests to controller methods in Spring Boot with annotations, curl testing, and HTTP status code handling via HandlerAdvice.
Explore the REST architectural style for designing web APIs, using stateless, resource-based requests with standard HTTP verbs to create, read, update, and delete resources.
Explore how Spring Boot 4 handles REST requests, validation, and data persistence with JPA and H2, using controllers, repositories, and entities like Person, Course, and Enrollment.
Run the spring boot application and use curl to query courses and enrollments, post enrollments, and observe responses such as 201 created, 404 not found, and 400 bad request.
Explore Spring Boot annotation types, including @SpringBootApplication, @RestController, and annotations like @Service and @Repository, plus composed @GetMapping, and learn rest requests, responses, and hierarchical versus independent API design.
In this personal challenge, I would like to invite you to enhance my application in a specific way. You can copy and paste the exact task description and curl commands from the attached PDF.
I explain how I solved the problem.
Explore how two Java applications communicate using JSON, compare RestTemplate and RestClient, and learn Jackson serialization with annotations in Spring Boot.
Demonstrates a Spring Boot 4 consumer using RestTemplate to call a provider web service, with model mapping, profile-driven beans, and getForObject, getForEntity, postForEntity, and exchange usage.
Replace RestTemplate with RestClient in a Spring Boot 4 app, using a RestClient bean to fetch courses and manage enrollments via GET, POST, and DELETE calls.
Recap the section's practical work: rest calls with RestTemplate and RestClient, JSON translation with Jackson, and using Spring profiles to toggle beans and handle put request with a 400 status.
Explore unit testing of an ai-generated username utility: validate inputs, normalize non-English characters, and verify with JUnit 5 assertions such as assertEquals and assertThrows.
Execute smoke tests to verify Spring Boot starts and components interoperate, using @SpringBootTest, @Autowired, and assertJ to ensure CourseService beans load correctly.
Create integration tests with Spring Boot 4 by starting the application on a random port and testing endpoints with a RestClient.
Use MockMVC to run controller tests without starting a web server, speeding up tests by mocking the web environment and using MockMVC assertions for fast, reliable verification.
Explore unit, web mvc tests, and integration tests for a Spring Boot enrollment controller, validating dates, mocking repositories, and verifying 201, 400, or 500 responses.
Explore practical testing in Spring Boot 4 by examining unit, integration, and MockMvc tests for an enrollment controller, using mock objects, RestClient calls, and date validation.
Cover the code with automatic tests, using unit tests with mocks via Mockito and validating mocked calls; explore integration tests with MockMVC and WebMVC to test a post endpoint.
This course covers all the essential parts of Spring Boot 4
I work as a Senior Java Developer and Solution Architect, and I know what topics are essential in the field
I introduce all the concepts in a logical order so you quickly get up to speed
I don't waste your time teaching you material that is hardly ever used in real-life (like Aspected Oriented Programming)
I show you real code, and I don't waste your time by live coding
I illustrate each section with a new working application that you can check out and run on your own computer.
Course is suitable for total beginners, but also for developers who have worked with Spring Boot
Course gives you a systematic understanding of both frameworks - Spring Framework and Spring Boot, and you need to understand that to work as a Senior Software Engineer one day
I show you how you can use ChatGPT or Copilot to move faster while still learning everything important
I teach you all the essential parts about Spring Boot in this course.
However, now and then, I point out what situations you can handle with an AI like ChatGPT or GitHub Copilot
I have included practical challenges
Each lecture is accompanied by a personal challenge that I have crafted for you to gain an understanding of the main concepts of the section.
I also provide complete solutions for all the challenges and explain them in separate videos - so you won’t have to be afraid that you get stuck solving any of the challenges.