DO NOT SKIP: New to Spring Boot?
Step 00 - Creating a REST API with Spring Boot - An Overview
CODE BACKUP FILES and STEP BY STEP CHANGES : For Reference
Step 01 - Initializing a REST API Project with Spring Boot
Step 02 - Creating a Hello World REST API with Spring Boot
Step 03 - Enhancing the Hello World REST API to return a Bean
Step 04 - What's happening in the background? Spring Boot Starters & Autoconfign
Step 05 - Enhancing the Hello World REST API with a Path Variable
Step 06 - Designing the REST API for Social Media Application
Step 07 - Creating User Bean and UserDaoService
Step 08 - Implementing GET Methods for User Resource
Step 09 - Implementing POST Method to create User Resource
Step 10 - Enhancing POST Method to return correct HTTP Status Code and Location
Step 11 - Implementing Exception Handling - 404 Resource Not Found
Step 12 - Implementing Generic Exception Handling for all Resources
Step 13 - Implementing DELETE Method to delete a User Resource
Step 14 - Implementing Validations for REST API
Step 15 - Overview of Advanced REST API Features
Step 16 - Understanding Open API Specification and Swagger
springdoc-openapi Dependency for next lecture
Step 17 - Configuring Auto Generation of Swagger Documentation
Step 18 - Exploring Content Negotiation - Implementing Support for XML
Step 19 - Exploring Internationalization for REST API
Step 20 - Versioning REST API - URI Versioning
Step 21 - Versioning REST API - Request Param Header and Content Negotiation
Step 22 - Implementing HATEOAS for REST API
Step 23 - Implementing Static Filtering for REST API
Step 24 - Implementing Dynamic Filtering for REST API
Step 25 - Monitoring APIs with Spring Boot Actuator
Step 26 - Exploring APIs with Spring Boot HAL Explorer
DO NOT SKIP - New to JPA and Hibernate?
Step 27 - Connecting REST API to H2 using JPA and Hibernate - An Overview
DO NOT SKIP - Additional Setting For Next Step - H2-CONSOLE
Step 28 - Creating User Entity and some test data
Step 29 - Enhancing REST API to connect to H2 using JPA and Hibernate
Step 30 - Creating Post Entity with Many to One Relationship with User Entity
Step 31 - Implementing a GET API to retrieve all Posts of a User
Step 32 - Implementing a POST API to create a Post for a User
Step 33 - Exploring JPA and Hibernate Queries for REST API
Step 34 - Connecting REST API to MySQL Database - An Overview
Step 34z - OPTIONAL - Installing Docker
Course Update: Changes to MySQL Connector
Step 35 - OPTIONAL - Connecting REST API to MySQL Database - Implementation
Step 36 - Implementing Basic Authentication with Spring Security
Step 37 - Enhancing Spring Security Configuration for Basic Authentication
Next Section uses Latest Version of Spring Boot
Step 01 - Part 1 - Intro to Limits Microservice and Spring Cloud Config Server
Step 01 - Part 2 - Setting up Limits Microservice
COURSE UPDATE : Limits service with >=2.4.0 of SPRING BOOT
Step 02 - Creating a hard coded limits service
Step 03 -Enhance limits service to get configuration from application properties
Step 04 - Setting up Spring Cloud Config Server
Step 06 - Creating Local Git Repository
Step 07 - Connect Spring Cloud Config Server to Local Git Repository
Step 08 - Configuration for Multiple Environments in Git Repository
Step 09 - Connect Limits Service to Spring Cloud Config Server
Debugging problems with Spring Cloud Config Server
Step 10 - Configuring Profiles for Limits Service
Step 11 - A review of Spring Cloud Config Server
Step 12 - Introduction to Currency Conversion and Currency Exchange Microservice
IMPORTANT : SPRING BOOT AND SPRING CLOUD VERSIONS
Step 13 - Setting up Currency Exchange Microservice
Step 14 - Create a simple hard coded currency exchange service
Step 15 - Setting up Dynamic Port in the the Response
Step 16 - Configure JPA and Initialized Data
Step 17 - Create a JPA Repository
Step 18 - Setting up Currency Conversion Microservice
Step 19 - Creating a service for currency conversion
Step 20 - Invoking Currency Exchange Microservice from Currency Conversion Micro
Step 21 - Using Feign REST Client for Service Invocation
Step 22 - Setting up client side load balancing with Ribbon
COURSE UPDATE : Ribbon DOES NOT work with Spring Boot 2.4
Step 23 - Running client side load balancing with Ribbon
Debugging problems with Feign and Ribbon
Step 24 - Understand the need for a Naming Server
Step 25 - Setting up Eureka Naming Server
Step 26 - Connecting Currency Conversion Microservice to Eureka
Step 27 - Connecting Currency Exchange Microservice to Eureka
COURSE UPDATE : Exclude dependency on jackson-dataformat-xml
Step 28 - Distributing calls using Eureka and Ribbon
Debugging Problems with Naming Server ( Eureka ) and Ribbon
Step 29 - A review of implementing Eureka Ribbon and Feign
Step 30 - Introduction to API Gateways
Step 31 - Setting up Zuul API Gateway
Step 32 - Implementing Zuul Logging Filter
Step 33 - Executing a request through Zuul API Gateway
Step 34 - Setting up Zuul API Gateway between microservice invocations
Debugging Problems with Zuul API Gateway
Step 35 - Introduction to Distributed Tracing
Step 36 - Implementing Spring Cloud Sleuth
Step 37 - Introduction to Distributed Tracing with Zipkin
Step 38 - Installing Rabbit MQ
Updates to Step 39 - Running Zipkin on Windows
Step 39 - Setting up Distributed Tracing with Zipkin
Step 40 - Connecting microservices to Zipkin
Updates to Step 40 : Use spring-cloud-starter-zipkin and spring-rabbit
Step 41 - Using Zipkin UI Dashboard to trace requests
Debugging Problems with Zipkin
Step 42 - Understanding the need for Spring Cloud Bus
Step 43 - Implementing Spring Cloud Bus
Step 44 - Fault Tolerance with Hystrix
RECOMMENDED: Use Latest Spring Boot Version
Have you already completed V1?
Step 01 - Setting up Limits Microservice - V2
CODE BACKUP FILES and STEP BY STEP CHANGES : For Reference
Step 02 - Creating a hard coded limits service - V2
Step 03 - Enhance limits service - Get configuration from application props - V2
Step 04 - Setting up Spring Cloud Config Server - V2
Step 05 - Installing Git and Creating Local Git Repository - V2
Debugging problems with Spring Cloud Config Server - V2
Step 06 - Connect Spring Cloud Config Server to Local Git Repository - V2
Step 07 - Connect Limits Service to Spring Cloud Config Server - V2
What should I do when I face a challenge
Step 08 - Configuring Profiles for Limits Service - V2
Debugging Guide for Microservices V2 + Docker + Docker Compose
Step 09 - Introduction to Currency Conversion & Exchange Microservices - V2
Step 10 - Setting up Currency Exchange Microservice - V2
URL and Response Structure for Currency Exchange Service
Step 11 - Create a simple hard coded currency exchange service - V2
Step 12 - Setting up Dynamic Port in the the Response - V2
Step 13 - Configure JPA and Initialized Data - V2
CODE BACKUP FILES and STEP BY STEP CHANGES : For Reference
Step 14 - Create a JPA Repository - V2
How to take care of yourselves
Step 15 - Setting up Currency Conversion Microservice - V2
URL and Response Structure for Currency Conversion Service
Step 16 - Creating a service for currency conversion - V2
Step 17 - Invoking Currency Exchange from Currency Conversion Microservice - V2
Step 18 - Using Feign REST Client for Service Invocation - V2
Step 19 - Understand Naming Server and Setting up Eureka Naming Server - V2
Debugging Problems with Eureka - V2
Step 20 - Connect Currency Conversion & Currency Exchange Microservices - V2
All Work and No Play Make Adam and Eve Dull Kids
Course Update - Github Repositories
Step 21 - QuickStart by Importing Microservices
Step 22 - Load Balancing with Eureka Feign & Spring Cloud LoadBalancer - V2
Step 22 - Setting up Spring Cloud API Gateway
Step 23 - Enabling Discovery Locator with Eureka for Spring Cloud Gateway
Debugging Problems with Spring Cloud Gateway - V2
Step 24 - Exploring Routes with Spring Cloud Gateway
Step 25 - Implementing Spring Cloud Gateway Logging Filter
Step 26 - Getting started with Circuit Breaker - Resilience4j
DO NOT SKIP: Update to Step 28 and Step 29 - Change in Configuration
Step 27 - Playing with Resilience4j - Retry and Fallback Methods
Step 28 - Playing with Circuit Breaker Features of Resilience4j
Step 29 - Exploring Rate Limiting and BulkHead Features of Resilience4j - V2
How to be Productive - 3 Tips
Step 00 - Match made in Heaven - Docker and Microservices
Step 01 - Installing Docker - Docker - V2
RECOMMENDATION : Use PowerShell in Windows!
Step 02 - Your First Docker Usecase - Deploy a Spring Boot Application
Step 03 - Docker Concepts - Registry Repository Tag Image and Containers
Step 04 - Playing with Docker Images and Containers
Step 05 - Understanding Docker Architecture - Docker Client Docker Engine
Step 06 - Why is Docker Popular
Step 07 - Playing with Docker Images
Step 08 - Playing with Docker Containers
Step 09 - Playing with Docker Commands - stats system
Why should you teach others
Step 10 - Introduction to Distributed Tracing
Step 11 - Launching Zipkin Container using Docker
Step 12 00 - Getting Started with Observability and OpenTelemetry
Next Lecture - Configuration for Connecting Microservices with Zipkin
Step 12 - Connecting Currency Exchange Microservice with Zipkin
Step 13 - Connecting Currency Conversion Microservice & API Gateway with Zipkin
Link for the Next Lecture
Step 14 - Getting Setup with Microservices for Creating Container Images
Step 15 - Creating Container Image for Currency Exchange Microservice
Step 16 - Getting Started with Docker Compose - Currency Exchange Microservice
Step 17 - Running Eureka Naming Server with Docker Compose
Step 18 - Running Currency Conversion Microservice with Docker Compose
Step 19 - Running Spring Cloud API Gateway with Docker Compose
Debugging Problems with Docker Compose
Spring Boot 3 Update - Zipkin URL Configuration
Step 20 - Running Zipkin with Docker Compose
Step 00 - Docker Kubernetes and Microservices - Made for each other
Step 01 - Getting Started with Docker Kubernetes and Google Kubernetes Engine
Step 02 - Creating Google Cloud Account
Step 03 - Creating Kubernetes Cluster with Google Kubernete Engine (GKE)
Step 04 - Review Kubernetes Cluster and Learn Few Fun Facts about Kubernetes
Step 05 - Deploy Your First Spring Boot Application to Kubernetes Cluster
Commands executed in this section
Step 06 - Quick Look at Kubernetes Concepts - Pods Replica Sets and Deployment
Step 07 - Understanding Pods in Kubernetes
Step 08 - Understanding ReplicaSets in Kubernetes
Step 09 - Understanding Deployment in Kubernetes
Step 10 - Quick Review of Kubernetes Concepts - Pods Replica Sets & Deployments
Technology Change is an Opportunity
Step 11 - Understanding Services in Kubernetes
Step 12 - Quick Review of GKE on Google Cloud Console
Step 13 - Understanding Kubernetes Architecture - Master Node and Nodes
Link for the Next Lecture
Step 14 - Setup Currency Exchange & Conversion Microservices - Kubernetes
Step 15 - Container images for Exchange & Currency Conversion Microservices
Step 16 - Deploy Microservices to Kubernetes & Understand Service Discovery
Step 17 - Creating Declarative Configuration Kubernetes YAML for Microservices
Step 18 - Clean up Kubernetes YAML for Microservices
Step 19 - Enable Logging and Tracing APIs in Google Cloud Platform
Step 20 - Deploying Microservices using Kubernetes YAML Configuration
Step 21 - Playing with Kubernetes Declarative YAML Configuration
Step 22 - Creating Environment Variables to enable Microservice Communication
Step 23 - Understanding Centralized Configuration in Kubernetes - Config Maps
Step 24 - Exploring Centralized Logging and Monitoring in GKE
Step 25 - Exploring Microservices Deployments with Kubernetes
Step 26 - Configuring Liveness and Readiness Probes for Microservices with K8S
Step 27 - Autoscaling Microservices with Kubernetes
Step 28 - Delete Kubernetes Cluster and Thank You!
Step 01 - Getting Started with Spring Boot - Goals
Step 02 - Understanding the World Before Spring Boot - 10000 Feet Overview
Step 03 - Setting up New Spring Boot Project with Spring Initializr
Step 04 - Build a Hello World API with Spring Boot
Step 05 - Understanding the Goal of Spring Boot
Step 06 - Understanding Spring Boot Magic - Spring Boot Starter Projects
Step 07 - Understanding Spring Boot Magic - Auto Configuration
Step 08 - Build Faster with Spring Boot DevTools
Step 09 - Get Production Ready with Spring Boot - 1 - Profiles
Step 10 - Get Production Ready with Spring Boot - 2 - ConfigurationProperties
Step 11 - Get Production Ready with Spring Boot - 3 - Embedded Servers
Step 12 - Get Production Ready with Spring Boot - 4 - Actuator
Step 13 - Understanding Spring Boot vs Spring vs Spring MVC
Step 14 - Getting Started with Spring Boot - Review
Maven Step 01 - Introduction to Maven
Maven Step 02 - Creating a Spring Boot Project with Maven
Maven Step 03 - Exploring Maven pom.xml for Spring Boot Project
Maven Step 04 - Exploring Maven Parent Pom for Spring Boot Project
Maven Step 05 - Exploring Maven Further
Maven Step 06 - Exploring Maven Build Lifecycle with a Spring Boot Project
Maven Step 07 - How does Maven Work?
Maven Step 08 - Playing with Maven Commands
Maven Step 09 - How are Spring Projects Versioned?
Step 01 - Getting Started with JPA and Hibernate - Goals
Step 02 - Setting up New Spring Boot Project for JPA and Hibernate
Step 03 - Launching up H2 Console and Creating Course Table in H2
Step 04 - Getting Started with Spring JDBC
Step 05 - Inserting Hardcoded Data using Spring JDBC
Step 06 - Inserting and Deleting Data using Spring JDBC
Step 07 - Querying Data using Spring JDBC
Step 08 - Getting Started with JPA and EntityManager
Step 09 - Exploring the Magic of JPA
Step 10 - Getting Started with Spring Data JPA
Step 11 - Exploring features of Spring Data JPA
Step 12 - Understanding difference between Hibernate and JPA
Step 00 - Introduction to Functional Programming - Overview
Step 01 - Getting Started with Functional Programming with Java
Step 02 - Writing Your First Java Functional Program
Step 03 - Improving Java Functional Program with filter
Step 04 - Using Lambda Expression to enhance your Functional Program
Step 05 - Do Functional Programming Exercises with Streams Filters and Lambdas
Step 06 - Using map in Functional Programs - with Exercises
Step 07 - Understanding Optional class in Java
Step 08 - Quick Review of Functional Programming Basics
Why Should You Embrace a Growth Mindset