Loading...
Java Backend Development with Spring boot and Microservices
Your Plan to Become a
Java
Backend Developer
Technologies covered













Course Structure
Spring Boot
- Backend Roadmap discussion
- Installation
- Getting started with programming
- Some basic calculations
- Use of datatypes
- Printing outputs
- What is Spring?
- Core Components of Spring
- Advantages of Using Spring
- Spring Philosophy and Loose Coupling
- Spring IoC Container
- Role of the Container
- Bean Factory vs. Application Context
- Bean Lifecycle
- Dependency Injection (DI)
- Bean Scopes
- Bean XML Config
- Constructor vs. Setter vs. Field Injection
- Benefits of DI in Promoting Loose Coupling
- Why Spring Boot?
- Spring Boot Starters
- Auto-Configuration
- Creating a Simple Spring Boot Application for REST APIs
- Understanding REST and RESTful Services
- Developing RESTful Services
- @RestController
- @RequestMapping and HTTP Methods
- Handling request and validations
- Status Codes and Responses
- Data Handling (JSON, XML)
- Exception Handling in REST APIs
- Integrating Data Sources
- Spring Data JPA
- Hibernate
- Repository Interfaces
- Transaction Management
- Build Tools
- How does maven work
- Practical guide to maven
- Concepts of AOP
- Architecture Components
- Aspect
- Join Point
- Advice
- Pointcut
- Using AOP for Transaction Management, Logging, and Security
- Basics of Spring Security
- Authentication vs. Authorization
- Securing REST APIs
- JSON Web Tokens (JWT)
- OAuth2
- Need of serialisation
- Derialisation and Deserialisation
- Serializable Interface
- transient Keyword
- ObjectOutputStream and ObjectInputStream
- Versioning and serialVersionUID
- Externalizable Interface
- Performance Considerations
- Security Concerns
- Use of Serialization in Frameworks
- Monitoring with Actuator
- Metrics and Health Indicators
- Custom Endpoints
- Profiles and Configuration Management
- Advanced Auto-Configuration
- Spring Testing Context
- Testing Spring Boot Applications
- Testing RESTful Web Services
- File Class
- Files Class
- Reading and Writing Files
- BufferedReader and BufferedWriter
- FileInputStream and FileOutputStream
- Directories and Paths
- Creating, Deleting, and Checking Files
- File Permissions
- Walking File Trees
- File Attributes
- Watching a Directory for Changes
- Overview of Garbage Collection
- Generational Garbage Collection
- Garbage Collection Algorithms: Mark-Sweep, Mark-Compact, Copying
- Garbage Collectors: Serial, Parallel, CMS, G1, ZGC, Shenandoah
- Garbage Collection Optimization
- Monitoring Garbage Collection with JVM Tools
- Finalization and its Pitfalls
- Weak References and Soft References
- Best Practices for Reducing Garbage Collection Overhead
- Java Compilation Process
- Java Compiler (javac)
- Bytecode in Java
- Just-In-Time (JIT) Compilation
- Stages of JIT Compilation: Interpretation, Compilation, Optimization
- HotSpot JVM Compiler
- Adaptive Optimization
- Benefits of JIT Compilation
- Comparison Between JIT and AOT (Ahead-Of-Time) Compilation
- Java Memory Model
- Heap Memory: Space where objects are allocated.
- Stack Memory: Stores method calls and local variables.
- Program Counter (PC) Register
- Method Area: Stores class structure and metadata.
- Runtime Constant Pool: Part of the method area which stores per-class runtime constants.
- Garbage Collection: Automatic memory management and cleanup.
- Memory Allocation: new Operator
- Memory Leaks and How to Avoid Them
- Set Up Development Environment: Install Java JDK, Maven/Gradle, and an IDE (e.g., IntelliJ IDEA or Eclipse).
- Create a New Spring Boot Project: Use Spring Initializr (start.spring.io) to generate a project with dependencies like Spring Web, Spring Data JPA.
- Project Structure Overview: Understand the standard Maven/Gradle project layout used by Spring Boot.
- Create a Domain Model: Define entity classes with JPA annotations.
- Create Repository Interfaces: Extend JpaRepository for database operations.
- Create Service Layer: Implement business logic in service classes.
- Create REST Controllers: Write controller classes to handle HTTP requests.
Relational Database (SQL)
- What is a Relational Database?
- What is non-relational Database
- Overview of SQL Database Systems (MySQL, PostgreSQL, Oracle, SQL Server)
- Database, Tables, and Rows
- Data Types and Schemas
- Primary Keys, Foreign Keys, and Indexes
- Basic Data Retrieval (SELECT, FROM, WHERE)
- Sorting and Filtering Data (ORDER BY, DISTINCT, LIMIT)
- Combining Conditions (AND, OR, NOT)
- Aggregate Functions (COUNT, SUM, AVG, MIN, MAX)
- Grouping Data (GROUP BY, HAVING)
- Subqueries and Joins
- Inner Joins
- Left/Right Outer Joins
- Cross Joins
- Self Joins
- Inserting Data (INSERT)
- Updating Data (UPDATE)
- Deleting Data (DELETE)
- Using Transactions (COMMIT, ROLLBACK)
- Understanding Normal Forms
- Designing Efficient Schema
- Avoiding Redundant and Duplicate Data
- Views and Stored Procedures
- Triggers and Cursors
- Dynamic SQL
- Indexing Strategies
- Query Optimization Techniques
- Performance Monitoring Tools
Microservices with Java Spring Boot
- What are Microservices?
- Definition and Core Principles
- Benefits and Challenges
- Monolithic vs. Microservices Architecture
- Comparison and Use Cases
- Microservices and Cloud-Native Architecture
- Java and Spring Boot Setup
- Development Tools and IDEs
- Introduction to Docker and Containers
- Creating a Basic Spring Boot Application
- Understanding Spring Boot Auto-Configuration
- Spring Boot Actuator for Health Checks
- Developing RESTful Services
- Controllers and Routing
- Data Exchange and Serialization
- Error Handling and Validation
- Securing REST APIs
- Synchronous vs. Asynchronous Communication
- RESTful API Communication
- Event-Driven Architecture
- Message Brokers (RabbitMQ, Kafka)
- Implementing Event Sourcing
- Database per Microservice
- Handling Data Consistency
- Distributed Transactions and Sagas
- Spring Cloud Config for Centralized Configuration
- Dynamic Configuration Updates
- Service Discovery Patterns
- Using Netflix Eureka
- Load Balancing with Spring Cloud LoadBalancer
- Routing and Aggregation
- Spring Cloud Gateway
- Security
- Circuit Breaker Pattern
- Spring Cloud Circuit Breaker
- Fallback Methods for Dependency Issues
Containerization with Docker
- Docker
- Containerization with Docker
- Kubernetes
- Microservices and Kubernetes
AWS for Deploying Microservices
- Overview of AWS
- Core services and their uses
- AWS Global Infrastructure (Regions, Availability Zones)
- Setting up an AWS account
- Understanding the AWS Management Console
- Amazon EC2
- Instances, AMIs, and Elastic Load Balancing
- AWS Lambda
- Serverless compute concepts
- AWS Elastic Beanstalk
- Deploying applications quickly
- Managing application environments
- Amazon ECS (Elastic Container Service)
- Basics of ECS
- Task Definitions, Services, and Clusters
- Amazon EKS (Elastic Kubernetes Service)
- Kubernetes on AWS
- EKS Cluster Management
- AWS Fargate
- Serverless compute for containers
- Running containers without managing servers
- Amazon S3
- Object storage for any scale
- Hosting static resources
- Amazon RDS
- Choosing the right database for microservices
- Amazon VPC
- Creating isolated networks
- Subnets, Route Tables, Internet Gateways
- AWS Route 53
- Content Delivery Network services
- AWS API Gateway
- Creating, deploying, and managing APIs
- Messaging and queuing services
- Decoupling microservices
- AWS CodeCommit, CodeBuild, and CodeDeploy
- Continuous integration and continuous delivery services
- AWS CodePipeline
- Orchestrating release pipelines
- Monitoring resources and applications