Spring Boot/Cloud
Target Audience: Developers with a basic understanding of Java and web development concepts.
Course Length: 4 days
Course Objectives:
Gain a solid understanding of Spring MVC fundamentals and architecture.
Master Spring Boot's features for rapid application development.
Build web applications with Spring Boot, including data access and RESTful services.
Implement security measures in Spring Boot applications using Spring Security.
Explore messaging services with Spring Boot and RabbitMQ.
Understand microservices architecture and key concepts.
Get introduced to Spring Cloud components for building microservices applications.
Course Schedule (4 Modules):
Module 1: Spring MVC Fundamentals
Integrating Spring with Java EE Web Applications
Spring Web MVC Overview, Capabilities, Architecture (Front Controller, MVC Pattern)
Spring MVC Basics - DispatcherServlet
Configuration using @EnableWebMvc
Controllers - @Controller, @RequestMapping (Handler Methods)
Controller Details - @RequestMapping, @RequestParam, @PathVariable
Model Data - @ModelAttribute, Model/ModelAndView Classes
Servlet Filters
Spring Profiles (Environment Management)
Module 2: Getting Started with Spring Boot
Spring Boot Starters, CLI, Maven Plugin
Application class (@SpringBootApplication)
Building a Runnable JAR
Dependency Injection, Component Scans, Configuration
Externalizing Configuration (application.properties/YAML)
Context Root and Management Ports
Custom Configurations
Bean Scopes in Detail
Logging (Async Logging, and other log appenders)
Module 3: Building Web Applications and Services
Spring MVC Controllers (@RequestMapping, @RequestParam)
Using JdbcTemplate (Database Access)
Executing SQL Scripts
JPA Data and Repositories
JPA Mapping Relations (One-to-One, One-to-Many, Many-to-Many)
Caching
JPA Custom Queries
JPA and NoSQL Integration
RESTful Web Services
REST Overview (Characteristics, Capabilities, URI Templates, REST vs SOAP)
REST with Spring MVC
Spring Support for REST
Annotations: @RequestMapping, @PathVariable, @RequestBody, @ResponseBody, HTTP Method Conversion
URI Templates and @PathVariable
Writing RESTful Controllers (@RestController)
JSON Representations for Resources
Message Converters (JAXB, Jackson for JSON/XML)
Content Negotiation
Client Interaction with Spring's RestTemplate
Module 4: Advanced Topics
Securing an Application with Spring Boot and Spring Security
Spring Security Overview (DelegatingFilterChainProxy, FilterChainProxy)
Spring Web Authentication and Key Classes (HttpSecurity, AuthenticationProvider, UserDetailsService, UserDetails, AuthenticationManager, Authentication, GrantedAuthorities)
Implementing Custom AuthenticationProvider and UserDetailsService (Hashed Passwords, Tokens)
Spring Security Authorization (AccessDecisionManager, AccessDecisionVoters)
Authorization with Annotations (@EnableGlobalMethodSecurity, JSR-250, Spring Security)
Exception Handling with @ControllerAdvice
Creating Custom Authorization Voter and AccessControlManager
HTTPS Implementation
Securing RESTful Services (Custom UsernamePasswordAuthenticationFilter)
JWT (JSON Web Token) Integration
JMS Services
RabbitMQ Support (AMQP and JMS)
Using JmsTemplate
MessageListenerAdapter
SimpleMessageListenerContainer
JmsListenerContainerFactory
Microservices
Microservices Architecture Design Pattern
Cloud-Native Design Principles
Microservices Overview
Security Considerations for Microservices
Spring Cloud
Configuration Management with Spring Cloud Config
Service Discovery with Netflix Eureka
Load Balancing with Spring Cloud Netflix Ribbon
Circuit Breakers with Spring Cloud Netflix Hystrix
Circuit Breaker Metric Aggregation with Spring Cloud Netflix Turbine
Distributed Tracing
Pub/Sub Processing
Zuul Filters