SPRING BOOT & MICROSERVICES
SPRING BOOT & MICROSERVICES
Description:
The course begins with an introduction to Spring, covering its evolution, modules, and dependency injection mechanism. Participants then delve into Spring Boot, learning its core features, auto-configuration, and externalized configuration. Next, they explore Spring MVC REST, Spring Data JPA, and Spring Security for securing REST endpoints and implementing role-based access control.
The course also covers microservices architecture, its challenges, and advantages, followed by hands-on sessions on implementing microservices using Spring Boot and Spring Cloud. Participants learn about Eureka Server for service discovery, Ribbon for client-side load balancing, Feign for declarative REST clients, Hystrix for circuit breaker pattern, Zuul for API gateway, and Spring Cloud Config for externalized configuration management.
Upon completion of the course, participants will be well-versed in building robust enterprise applications and scalable microservices architectures using Spring Boot and Spring Cloud technologies. They will have practical experience in developing, deploying, and managing microservices-based applications, ready to tackle real-world challenges in modern software development.
Prerequisites:
- Good knowledge of Java Programming.
- Understanding of Web technologies is a must.
Objectives:
- Developing enterprise applications using Spring.
- Learn the core concepts of Spring: Container, Dependency injection, Configuration.
- Learn how to create data-driven applications using Spring.
- Understand the REST principles.
- Learn how to create HTTP Services using the REST principles.
- Understand how to secure REST endpoints.
- Learn the concepts of Microservices.
- Learn how to implement Microservices using Spring Boot
Duration: 5 days
COURSE OUTLINE
Introduction to Spring
- Understanding the Spring Framework
- Spring Versions and Evolution
- Spring Modules Overview
- Spring Container and Dependency Injection
Spring Boot
- Introduction to Spring Boot
- Spring Boot Maven Dependencies
- @EnableAutoConfiguration and Its Mechanism
- Deep Dive into Auto Configuration Classes
- @SpringBootApplication
- Annotation
- Externalizing Configuration in Spring Boot
- Accessing Command Line Properties
- Application Properties
- @ConfigurationProperties
- Configuring Data Source
- Type-Safe Configuration Properties
Spring MVC REST
- Basics of REST
- REST Architectural Principles
- Annotations: @ResponseBody, @RequestBody
- HTTP Message Converters and Content Negotiation
- Exception Handling
- Pagination
- HTTP Entity and Response Entity
- Rest Template for Client Communication
- UriBuilder
Spring Data
- Introduction to Spring Data JPA
- Using Spring Data MongoDB, Redis, etc.
- Repository Pattern and CRUD Operations
Spring Security
- Authentication and Authorization in Spring Boot
- Securing REST Endpoints
- Role-based Access Control
Introduction to Micro Services
- Challenges with Monolithic Applications
- Introduction to Microservices Architecture
- Advantages and Disadvantages of Microservices
- Use Cases for Microservices
- Domain-Driven Design (DDD) Concepts
Spring Cloud
- Overview of Spring Cloud and its Modules
- Introduction to Discovery Server
- Creating Eureka Server
- Registering Eureka Client
- Service Lookup from Eureka Server
Spring Cloud Ribbon
- Client-Side Load Balancing
- Understanding Spring Ribbon for Load Balancing
- Implementing Client-Side Load Balancing with Ribbon
Spring Cloud Feign
- Introduction to Feign
- Declarative REST Clients
- Implementation of REST Client with Feign
Spring Cloud Hystrix
- Introduction to Circuit Breaker Pattern
- Using Hystrix with Ribbon and Feign
- Implementation of Circuit Breaker with Hystrix
API Gateway and ZUUL
- Role of API Gateway
- Introduction to Zuul
- Using Zuul for Proxying Microservices
Spring Cloud Config
- Configuring Server and Client with Configuration File
- @EnableConfigServer Annotation
- HTTP API for External Configuration
- Using GitHub for Configuration Management