Kotlin is the Modern, concise and safe programming language and is one of the popular JVM language in this day and age.
It’s also interoperable with Java and other languages, and provides many ways to reuse code between multiple platforms for productive programming.
This course will focus on using Kotlin for Server-Side Development using SpringBoot framework. This is a pure hands-on oriented course which covers these two topics:
Covers Kotlin Fundamentals thats necessary for Java Developers
Build RestFul APIs using SpringBoot and Kotlin
Kotlin is the Modern, concise and safe programming language and is one of the popular JVM language in this day and age.
It’s also interoperable with Java and other languages, and provides many ways to reuse code between multiple platforms for productive programming.
This course will focus on using Kotlin for Server-Side Development using SpringBoot framework. This is a pure hands-on oriented course which covers these two topics:
Covers Kotlin Fundamentals thats necessary for Java Developers
Build RestFul APIs using SpringBoot and Kotlin
Section 1: Getting Started With the Course
This section covers the course objectives and the prerequisites that are needed to make the most out of this course.
Section 2: Getting Started with Kotlin Programming Language
In this section, I will introduce you to Kotlin Programming Language and why its a powerful language for enterprise development.
Introduction to Kotlin
How Kotlin Works with the JVM?
Section 3: Kotlin Fundamentals
In this section, we will explore the fundamentals of Kotlin.
val & var variables in Kotlin
Basic Types - Int, Long, Double, String
Conditionals - If and when block
Ranges , Loops
while & do-While
break, labels and return
Section 4: Functions in Kotlin
In this section, we will learn about functions in Kotlin and different ways of declaring and using them
Defining and Invoking Functions
Default Value Parameters & Named Arguments
Top-Level Functions and Top-level Properties
Section 5: Classes, Interfaces and Inheritance
In this section, we will learn about classes, inheritance and interfaces in detail.
Introduction to class - Creating a class and objects
Primary Constructors
Secondary Constructors
initializer code using init block
Data Classes
Custom Getters and Setters
Inheritance - Extending Classes
Inheritance - Override Functions, Variables
object keyword for creating instance of the class
companion object Keyword
Interfaces
Interfaces - Handling Conflicting Functions
Interfaces - Defining and Overrding Variables
Visibility Modifiers
Type Checking, Casting and Smart Cast
Enum class
Section 6: Nulls in Kotlin
In this section, we will learn about handling nulls in Kotlin
Nullable & Non-Nullable types in Kotlin
Safe Call(?) , Elvis Operator(?:) & Non Null Assertion(. ) to deal with Null Values
Invoking or assigning a Nullable Type to a Non-Nullable Type
Section 7: Collections, Arrays & Lamda Expressions
In this section, I will introduce you to collections, arrays and lambda expressions in Kotlin
Introduction to Collections
Introduction to Lamda Expressions
Lambdas and Higher Order Functions
Filter Operations on Kotlin Collections
Map Operations on Kotlin Collections
FlatMap Operations in Collections
Working With HashMaps
Lazy Evaluation of Collections using Sequences
Nullability in Collections
Section 8 : Exceptions In Kotlin
In this section, I will cover the exceptions in kotlin and the techniques to handle them.
Handling Exceptions using try-catch
Section 9 : Scope Functions
In this section, I will introduce you all to scope functions in Kotlin and its usage.
Introduction to Scope Functions
apply & also Scope Function
let Scope Function
with & run Scope Function
Section 10 : Getting Started with Kotlin and Spring Boot
In this section, I will explain the overview of the app we are going to build and build a very simple API.
Overview of the app & Project Setup
Build a Simple Endpoint - Greeting Controller
Constructor Injection in Spring
Setting up different profiles in Spring Boot
Set up Logging in Kotlin
Section 11 : Integration/Unit Testing using Junit 5
In this section, I will code and explain about the techniques to write different types of test cases using spring boot and Kotlin.
Introduction to Automated Tests & Setting up JUnit5
Integration Test for Controller
Unit Test for Controller - Using the Mockk Mocking library
Section 12 : Build the Course Catalog Service
In this section, we will build the Course Catalog Service to manage the Courses
Set up the Course Entity & CourseDTO
Create CourseRepository & Configure JPA in application.yml file
Build the POST Endpoint for adding new Course I
ntegration test for the POST endpoint using JUnit5
Build the Get Endpoint to retrieve all Courses
Integration test for the GET endpoint to retrieve all the courses
Build the Update Endpoint to update a Course
Integration test for the PUT endpoint using JUnit5
Build the DELETE endpoint to delete a Course
Section 13: Unit Testing Controller layer (Web Tier)
In this section, we will code and learn about how to write unit tests for the controller
Setting up the Unit Test for the CourseController
Unit test for the Post Endpoint in CourseController
Unit test for the GET Endpoint in CourseController
Unit test for the PUT Endpoint in CourseController
Unit test for the DELETE Endpoint in CourseController
Section 14 : Bean Validation using Validators and ControllerAdvice
In this section, we will code and learn the different techniques to apply bean validations and handle exceptions using the ControllerAdvice Pattern
Name and Category as Mandatory using @NotBlank Annotation
Implement Custom Error Handling using ControllerAdvice pattern
Handle Global RuntimeException using ControllerAdvice Pattern
Section 15 : Custom JPA queries using Spring Data JPA and DB Layer testing using @DataJpaTest
In this lecture, we will learn about the techniques to write custom JPA queries and the techniques to test the DB layer using the DataJpaTest
Retrieve Courses By Name using JPA Query Creation Function
Retrieve Courses By Name using Native SQL query
Testing Mutliple sets of Data using @Parameterized test
Section 16: GET Endpoint to retrieve Courses By Name using @RequestParam
In this section, we will code and learn about the usage of RequestParam in the controller endpoint.
Use existing GET endpoint to retrieve Courses by Name
Write Integration test to retrieve course by Name
Section 17 : Entity RelationShips using Spring Data JPA
In this section, I will explain the technique to express the relationships in JPA using Entity and Data classes in Kotlin
Adding Instructor Entity in to the Course Catalog Service
Adding the relationship in the Entity Class
Instructor Controller to Manage Instructor Data
Update CourseService to validate Instructor Data
Fix the CourseController Integration Tests
Fix the CourseController Unit Tests
Section 18 : Integrating with Postgres DB
In this section, we will code and learn to integrate the postgres DB in to the course catalog service.
Setting up the Postgres DB and App to interact with Postgres
Test the app with Postgres DB
Section 19 : Integration Testing using TestContainers
In this section, we will code and learn to integrate the testcontainers to run integration test.
Setting Up TestContainers for the Integration Test
Configure @DataJpaTest with TestContainers
Section 20 : Java & Kotlin Interoperability
In this section, we will code and learn about the interoperability between Java and Kotlin.
Invoking Kotlin Code from Java Class
Invoking Java Code from Kotlin
Useful JVM annotations in Kotlin
By the end of this course, you will be comfortable writing code using the Koltin Programming language and Build RestFuL APIs using SpringBoot and Kotlin.
In this lecture, I will give an introduction to the course.
This lecture includes the Course Slides that are used in the course.
This lecture has content that are related to the Source Code thats used in this course
In this lecture, I will explain about Why Kotlin is a powerful language for software development.
In this lecture, I will explain how Kotlin works with the JVM.
In this lecture, we will set up the project to explore Kotlin
In this lecture, we will create a simple HelloKotlin Class and print "Hello Kotlin" in the console
In this lecture, we will learn about the val and var type in Kotlin to declare the variables
In this lecture, we will explore the basic types and the basic operations that can be performed on the basic types
In this lecture, we will explore the if-else block and when block in Kotlin
In this lecture, we will explore ranges, loops, while and do-while loops.
In this lecture, we will explore while and do-while loops.
In this lecture, we will explore break, labels, and returns
In this lecture, we will code and explore different types of functions in Kotlin.
In this lecture, we will code and learn about the default parameters and the named arguments for Kotlin functions
In this lecture, we will code and learn about the top level functions and variables in Kotlin
In this lecture, we will code and learn about creating a class and instance of a class in Kotlin
In this lecture, we will code and learn about the primary constructor in Kotlin.
In this lecture, we will code and learn about the secondary constructor in Kotlin.
In this lecture, we will code and learn about the usage of init block to run some initialization logic during the instance creation
In this lecture, we will code and learn about the data class in kotlin.
In this lecture, we will code and learn about creating custom getters and setters in kotlin
In this lecture, we will code and learn about implementing inheritance in Kotlin
In this lecture, we will code and learn about overriding functions, variables in Kotlin.
In this lecture, we will code and learn about the object keyword and its usage in Kotlin
In this lecture, we will code and learn about the companion object keyword and its usage in Kotlin
In this lecture, we will code and learn about the Interfaces in Kotlin
In this lecture, we will code and learn about the handling conflicting functions in the implementation class
In this lecture, we will code and learn about using variables in Kotlin Interfaces
In this lecture, we will code and learn about visibility modifiers in Kotlin
In this lectture, we will code and learn about type checking, casting and smart casting in Kotlin
In this lecture, we will code and learn about Enum classes in Kotlin.
In this lecture, we will code and learn about the nullable and non nullable types in Kotlin
In this lecture, we will code and learn about the performing operations on a nullable type using the Safe and Elvis operators
In this lecture, we will code and learn about using a nullable type to deal with Non-Nullable Types
In this lecture, I will give you all an introduction to collections and learn about the mutable and immutable collections.
In this lecture, I will give you all an introduction to Lambda expressions and explore Lambda expression using different examples
In this lecture, we will code and explore how to create higher order functions using Lambdas
In this lecture, we will code and explore about the filter operator in collections
In this lecture, we will code and explore about the map operator in collections
In this lecture, we will code and explore about the flatMap operator and when it can be used when working with collections
In this lecture, we will code and explore the different operators that can be used when working with HashMaps
In this lecture, we will explore an alternative to work on the collection using sequences for lazy evaluation
In this lecture, we will code and explore the nullability and how it works with Kotlin
In this lecture, we will code and learn about the Exceptions in Kotlin and how to handle them.
In this lecture, I will give an introductions to scope functions in Kotlin.
In this lecture, we will code and explore about the also and apply scope function.
In this lecture, we will code and explore about the let scope function.
In this lecture, we will code and explore about the with and run scope function.
In this lecture, I will give an overview of the app and set up the base project for this course
In this lecture, we will build a simple rest endpoint using Kotlin and Spring boot
In this lecture, we will build a service layer and learn to perform constructor injection in Spring boot
In this lecture, we will code and learn to set up different profiles in SpringBoot.
In this lecture, we will set up the logging for the application
In this lecture, I will explain about automated tests and set up test folders for unit and integration tests
In this lecture, we will code and learn to write integration test for the controller endpoint
In this lecture, we will code and learn to write unit test for the controller endpoint
In this lecture, we will code the Entity and DTO for the course catalog service.
In this lecture, we will code and configure the JPA and set up the repository in the project
In this lecture, we will code the POST endpoint to create a new course
In this lecture, we will write the Integration test for the POST endpoint to create a new course
In this lecture, we will code the GET endpoint to retrieve all the courses
In this lecture, we will code the write the integration test for the GET endpoint to retrieve all the courses
In this lecture, we will code the PUT endpoint to update an existing course
In this lecture, we will write the integration test for the PUT endpoint to update an existing course
In this lecture, we will code the Delete endpoint to delete a course using its id.
In this lecture, we will set up the unit test for the CourseController
In this lecture, we will write the unit test for the POST endpoint in CourseController
In this lecture, we will write the unit test for the GET endpoint in CourseController
In this lecture, we will write the unit test for the PUT endpoint in CourseController
In this lecture, we will write the unit test for the DELETE endpoint in CourseController
In this lecture, we will the bean validation for the CourseDTO by making the name and category as mandatory
In this lecture, we will implement a custom error handler using the ControllerAdvice pattern for handling Bean Validation errors
In this lecture, we will implement a custom error handler using the ControllerAdvice pattern for handling any RuntimeException.
In this lecture, we will write a custom JPA function to retrieve the courses by their name by using the JPA helper function
In this lecture, we will write a custom JPA function to retrieve the courses by their name by using the Native SQL query.
In this lecture, we will code and learn about testing with multiple sets of data using the @Parameterized test annotation.
In this lecture, we will update the GET endpoint to retrieve the courses by their name using the @RequestParam annotation
In this lecture, we will write the integration test to get the courses by their name
In this lecture, I will introduce you to the Instructor Entity and its importance
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.