This course was created with the
course builder. Create your online course today.
Start now
Create your course
with
Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Mastering Spring Boot in depth: A Comprehensive Guide
Spring Core
What is spring framework (0:50)
Core features of spring framework (2:05)
What is a spring bean (0:41)
Lifecycle of a spring bean (0:49)
Bean configuration (1:58)
Spring component sample (1:19)
Spring components (0:43)
Bean naming (1:17)
Dependency injection (1:16)
Bean constructor injection (0:59)
Bean injection using @Qualifier (1:35)
Bean injection using @Primary (1:10)
Bean field injection (0:44)
Bean method injection (0:51)
Bean setter method injection (0:43)
Official recommendation (0:46)
Spring bean scopes (3:32)
Special spring beans - environement (1:38)
Special spring beans - profiles (2:42)
Reading properties using @value (2:13)
Best practices (1:19)
Spring Boot
Spring initialzr (1:50)
Spring boot introduction (1:37)
Spring Boot in Action
Create a new spring boot project (5:25)
Open the new spring boot project (1:02)
Enable the new intellij UI theme (1:17)
Setup SDK (1:33)
Project structure in depth (7:11)
Run and customize applicaiton banner (4:07)
Spring beans in action
Create the first java class (0:39)
Spring bean creation using @Bean (4:38)
Spring bean creation using @Component,@Service,@Repository (3:33)
Externalize the configuration (1:30)
Spring beans naming (2:31)
Extend MyFirstClass bean (1:33)
Dependency injection
Create the first spring service (1:45)
Constructor injection (4:50)
Bean injection using @Qualifier (3:26)
Bean injection using @Primary (1:44)
Bean injection using field injection (2:47)
Bean injection using method injection (1:54)
Bean injection using setter method injection (1:17)
Spring special beans
Environment bean - read system properties (2:13)
Environment bean - read application properties (1:32)
Cleanup the code before moving forward (0:59)
Inject properties using @value from multiple files (4:52)
Inject properties using @value (3:31)
Spring profiles
Spring profiles - definition and use cases (1:58)
Spring profiles - application properties (3:00)
Spring profiles - set active profile in application properties (3:52)
Spring profiles - set active profile programmatically (1:47)
Spring profiles - bean registration with @Profile (4:26)
Spring REST
REST overview (3:52)
Spring REST - resource design (2:52)
Spring REST - HTTP methods (1:49)
Spring REST - response status codes (0:59)
Spring REST - response status codes - 2xx (1:55)
Spring REST - response status codes - 3xx (1:53)
Spring REST - response status codes - 4xx (2:00)
Spring REST - response status codes - 5xx (1:28)
Spring REST - example (2:29)
Spring REST in action
Cleanup the code (1:35)
Create the first controller (0:42)
Create the first endpoint (6:05)
Ceate the first post endpoint (3:04)
Postman overview (10:45)
Perform the first post request (2:11)
Understand the @RequestBody (4:16)
Create the order POJO (1:07)
Pass a complex java Object (order class) as a request body (3:54)
The importance of accessors (Getters & Setter) for the serialization process (3:15)
Properties names mapping with @JsonPropetry (4:05)
Create order record object (1:16)
Use order record as a request body (2:03)
How to choose between records and POJOS (2:07)
Passing a parameter as path variable (5:10)
Passing a parameter as request parameter (3:18)
@PathVariable vs @RequestParam (1:44)
Request dispatching (6:53)
Spring data JPA
Cleanup the code (0:49)
Install postgres on premis (1:49)
Install postgres on docker (1:26)
Database explorer with Intellij (ultimate version) (3:20)
Database explorer with DBeaver (1:33)
Add the required dependencies (2:33)
Configure the database connection properties (part 1) (5:29)
Add Postgresql drive dependency (0:53)
Configure the database connection properties (part 2) (2:03)
Create a new database (0:59)
Create the student java class (1:50)
What is an entity in spring data JPA (1:31)
Transform the student class to an entity (2:59)
Add the jpa properties (6:13)
@Table annotation (1:47)
@Column annotation (5:43)
@GeneratedValue annotation (5:56)
Create the student repository (1:54)
Persist data to the database (5:33)
Find student by id (2:30)
Select all students (2:29)
Filter students by name (create a custom query) (6:24)
Delete a student (2:33)
Create school entity (1:24)
Create student profile entity (1:07)
Class diagram (0:58)
@OneToOne relationship (4:47)
@OneToMany relationship (2:20)
@ManyToOne relationship (2:23)
How to check if your implementation is correct? (1:57)
Implement school controller (2:55)
Insert school and students (7:23)
DTO pattern
DTO pattern definition (5:01)
Create the student DTO (2:17)
Use the student DTO to persist (6:17)
Create student response DTO and expose it as response (3:12)
Create school DTO (0:36)
Use the school DTO to create new school (4:13)
Use the school DTO to expose the list of schools (2:47)
Service layer
Why we need a service layer? (3:12)
The best way to organize your code (4:08)
Lets organize the code (4:25)
Test the application after the refactoring (2:08)
Create the student mapper service (2:31)
Create the student service layer (3:52)
Exercice 1- migrate all the logic from the controller to the service and make the code works (0:30)
Exercice 1- solution (3:03)
Exercice 2 - return student response dto as a response instead of student entity (0:30)
Exercice 2 - solution (3:34)
Exercice 3- create the required services for the school (0:33)
Exercice 3- solution (3:52)
Data validation
Add the spring validation dependency (1:05)
The importance of data validation (2:15)
Add validation to the student DTO (3:40)
Validate the student DTO and test the changes (2:57)
Capture the validation exception and return a proper response to the client (5:52)
Customise the error message (2:04)
Exploring all the validation annotations (7:48)
Are we done with the implementation? (2:06)
Testing overview
Spring boot testing support (2:44)
The importance of testing (3:29)
Testing in action
Setup method (@BeforeEach) (3:42)
Understand and generate the first test class (6:20)
TearDown method (@AfterEach) (1:28)
BeforeAll (@beforeall) (2:10)
AfterAll (@afterAll) (1:24)
Implement the first test method (8:13)
Exercice 1 (0:36)
Exercice 1 - solution (2:45)
Code coverage and exception handling (7:02)
Test isolation with Mockito
What istest isolation? (2:29)
Create and initialize the StudentServiceTest class (4:32)
How to mock method calls with mockito (8:28)
Improve your code performance with the verify (4:18)
Exercice 1 - implement test for findAllStudent (0:23)
Exercice 1 - solution (3:50)
Exercice 2 - implement the test for findStudentById (0:12)
Exercice 2 - solution (3:21)
Exercice 3 - implement findStudentByName (0:28)
Exercice 3 - solution (2:49)
@GeneratedValue annotation
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock