Cloud-based, highly-distributed applications face additional challenges in supporting a dynamic environment – especially around configuration, service discovery, service resilience and monitoring. Spring Cloud embraces and extends the popular suite of open source cloud tools published by Netflix (Eureka, Hystrix, Ribbon, etc).
This course introduces Spring Boot, Spring Cloud and the Netflix OSS suite as a way of deploying highly resilient and scalable RESTful services and web applications.
Objectives
In this training, attendees will learn how to:
- Create Spring Boot projects
- Use databases and JPA in Spring Boot
- Create RESTful services with Spring Boot
- Deploy services that use Netflix Eureka, Hystrix and Ribbon to create resilient and scalable services
Topics
- Introduction to the Spring Framework
- Spring Annotation Configuration
- Spring Framework
- Introduction to Spring Boot Configuration
- Spring MVC
- Overview of Spring Boot Database Integration
- Using Spring with JPA or Hibernate
- Introduction to MongoDB
- Working with Data in MongoDB
- Spring Data with MongoDB
- Spring REST Services
- Spring Security
- Spring JMS
- Microservices
- Spring Cloud Config
- Service Discovery with Netflix Eureka
- Load-Balancing with Netflix Ribbon
- Application Hardening with Netflix Hystrix
- Edge Components with Netflix Zuul
- Distributed Tracing with Zipkin
Audience
Java developers preparing to write and - or support back-end server applications using the Spring framework.
Prerequisites
Students should have experience with Java development
Duration
4 Days
Outline for Mastering Microservices with Spring Boot and Spring Cloud Training
Chapter 1. Introduction to the Spring Framework
What is the Spring Framework?
Spring Philosophies
Why Spring?
Spring Modules
Requirements and Supported Environments
Using Spring with Servers
Role of Spring Container
Spring Example
Avoiding Dependency on Spring
Additional Spring Projects/Frameworks
Summary
Chapter 2. Spring Annotation Configuration
Spring Containers
Annotation-based Spring Bean Definition
Scanning for Annotation Components
Defining Component Scope Using Annotations
JSR-330 @Named Annotation
JSR-330 @Scope
Annotation-based Dependency Injection
Wiring Bean using @Inject
@Autowired – Constructor
@Autowired – Field
@Autowired – method
@Autowired – Collection
@Autowired – Maps
@Autowired & @Qualifier with Constructors, Fields, and Methods
@Autowired & Custom Qualifiers
@Autowired & Simple Custom Qualifier Field
@Autowired & Simple Custom Qualifier Method
@Autowired & CustomAutowireConfigurer
Dependency Injection Validation
@Resource
@PostConstruct and @PreDestroy
Summary
Chapter 3. Spring Framework Configuration
Java @Configuration Classes
Defining @Configuration Classes
Loading @Configuration Classes
Modularizing @Configuration Classes
Qualifying @Bean Methods
Trouble with Prototype Scope
Configuration with Spring Expression Language
Resolving Text Messages
Spring Property Conversion
Spring Converter Interface
Using Custom Converters
Spring PropertyEditors
Registering Custom PropertyEditors
Summary
Chapter 4. Introduction to Spring Boot
What is Spring Boot?
Spring Framework
How is Spring Boot Related to Spring Framework?
Spring Boot 2
Spring Boot Main Features
Spring Boot on the PaaS
Understanding Java Annotations
Spring MVC Annotations
Example of Spring MVC-based RESTful Web Service
Spring Booting Your RESTful Web Service
Spring Boot Skeletal Application Example
Converting a Spring Boot Application to a WAR File
Externalized Configuration
Starters
Maven - The 'pom.xml' File
Spring Boot Maven Plugin
Gradle - The 'build.gradle' File
Spring Boot Maven Plugin
HOWTO: Create a Spring Boot Application
Summary
Chapter 5. Spring MVC
Spring MVC
Spring Web Modules
Spring MVC Components
DispatcherServlet
Spring WebFlux Module
Spring WebFlux
Template Engines
Spring Boot MVC Example
Spring MVC Mapping of Requests
Advanced @RequestMapping
Composed Request Mappings
Spring MVC Annotation Controllers
Controller Handler Method Parameters
Controller Handler Method Return Types
View Resolution
Spring Boot Considerations
Summary
Chapter 6. Overview of Spring Boot Database Integration
DAO Support in Spring
Spring Data Access Modules
Spring JDBC Module
Spring ORM Module
DataAccessException
@Repository Annotation
Using DataSources
DAO Templates
DAO Templates and Callbacks
ORM Tool Support in Spring
Summary
Chapter 7. Using Spring with JPA or Hibernate
Spring JPA
Benefits of Using Spring with ORM
Spring @Repository
Using JPA with Spring
Configure Spring Boot JPA EntityManagerFactory
Application JPA Code
"Classic" Spring ORM Usage
Spring JpaTemplate
Spring JpaCallback
JpaTemplate Convenience Features
Spring Boot Considerations
Spring Data JPA Repositories
Database Schema Migration
Database Schema Migration for CI/CD using Liquibase
How Liquibase Works?
Changelogs in Liquibase
Preconditions in Changelogs
Sample Empty Changelog
Sample Precondition in Changelog
Sample Changeset in Changelog
Running Liquibase
Liquibase Commands
Summary
Chapter 8. Introduction to MongoDB
MongoDB
MongoDB Features
MongoDB’s Logo
Positioning of MongoDB
MongoDB Applications
MongoDB Data Model
MongoDB Limitations
MongoDB Use Cases
MongoDB Query Language (QL)
The CRUD Operations
The
find
Method
The
findOne
Method
A MongoDB QL Example
Data Inserts
MongoDB vs Apache CouchDB
Summary
Chapter 9. Working with Data in MongoDB
Reading Data in MongoDB
The Query Interface
Query Syntax is Driver-Specific
Projections
Query and Projection Operators
MongoDB Query to SQL Select Comparison
Cursors
Cursor Expiration
Writing Data in MongoDB
An Insert Operation Example
The Update Operation
An Update Operation Example
A Remove Operation Example
Limiting Return Data
Data Sorting
Aggregating Data
Aggregation Stages
Accumulators
An Example of an Aggregation Pipe-line
Map-Reduce
Summary
Chapter 10. Spring Data with MongoDB
Why MongoDB?
MongoDB in Spring Boot
Pom.xml
Application Properties
MongoRepository
Custom Query Methods
Supported Query Keywords
Complex Queries
Create JavaBean for Data Type
Using the Repository
Summary
Chapter 11. Spring REST Services
Many Flavors of Services
Understanding REST
RESTful Services
REST Resource Examples
@RestController Annotation
Implementing JAX-RS Services and Spring
JAX-RS Annotations
Java Clients Using RestTemplate
RestTemplate Methods
Summary
Chapter 12. Spring Security
Securing Web Applications with Spring Boot 2
Spring Security
Authentication and Authorization
Programmatic vs Declarative Security
Getting Spring Security Gradle or Maven
Spring Security Configuration
Spring Security Configuration Example
Authentication Manager
Using Database User Authentication
LDAP Authentication
What is Security Assertion Markup Language (SAML)?
What is a SAML Provider?
Spring SAML2.0 Web SSO Authentication
Setting Up an SSO Provider
Adding SAML Dependencies to a Project
Dealing with the State
How Can I Maintain State?
SAML vs. OAuth2
OAuth2 Overview
OAuth – Facebook Sample Flow
OAuth Versions
OAuth2 Components
OAuth2 – End Points
OAuth2 – Tokens
OAuth – Grants
Authenticating Against an OAuth2 API
OAuth2 using Spring Boot – Dependencies
OAuth2 using Spring Boot – application.yml
OAuth2 using Spring Boot – Main Class
OAuth2 using Spring Boot – SPA Client
JSON Web Tokens
JSON Web Token Architecture
How JWT Works
JWT Header
JWT Payload
JWT Example Payload
JWT Example Signature
How JWT Tokens are Used
Adding JWT to HTTP Header
How The Server Makes Use of JWT Tokens
What are “Scopes”?
JWT with Spring Boot – Dependencies
JWT with Spring Boot – Main Class
Summary
Chapter 13. Spring JMS
Spring JMS
JmsTemplate
Connection and Destination
JmsTemplate Configuration
Transaction Management
Example Transaction Configuration
Producer Example
Consumer Example
Converting Messages
Message Listener Containers
Message-Driven POJO's Async Receiver Example
Message-Driven POJO's Async Receiver Configuration
Spring Boot Considerations
Summary
Chapter 14. Microservices
What is a “Microservice”?
One Helpful Analogy
SOA – Microservices Relationship
ESB – Microservices Relationship
Traditional Monolithic Designs and Their Role
Disadvantages of Monoliths
Moving from a Legacy Monolith
When Moving from a Legacy Monolith
The Driving Forces Behind Microservices
How Can Microservices Help You?
The Microservices Architecture
Utility Microservices at AWS
Microservices Inter-connectivity
The Data Exchange Interoperability Consideration
Managing Microservices
Implementing Microservices
Embedding Databases in Java
Microservice-Oriented Application Frameworks and Platforms
Summary
Chapter 15. Spring Cloud Config
The Spring Cloud Configuration Server
Why Configuration Management is Important
Configuration Management Challenges in Microservices
Separation of Configuration from Code
Configuration Service
How the Configuration Service Works
Cloud Config Server Properties File
Git Integration
Properties
Configuration Client
Sample Client Config File
Sample Client Application
Dynamic Property Updates – Server
Dynamic Property Update – Client
Dynamic Property Update – Execute
Summary
Chapter 16. Service Discovery with Netflix Eureka
Service Discovery in Microservices
Load Balancing in Microservices
Netflix Eureka
Eureka Architecture
Communications in Eureka
Time Lag
Eureka Deployment
Peer Communication Failure between Servers
Eureka Server Configuration
Eureka Client/Service
Eureka Client Properties
Spring Cloud DiscoveryClient Interface
ServiceInstance JSON
ServiceInstance Interface
What about Services
Eureka and the AWS Ecosystem
Summary
Chapter 17. Load-Balancing with Netflix Ribbon
Load Balancing in Microservices
Netflix Ribbon
Server-side load balance
Client-side Load Balance
Architecture
Load Balance Rules
RoundRobinRule
AvailabilityFilteringRule
WeightedResponseTimeRule
RandomRule
ZoneAvoidanceRule
IPing Interface (Failover)
Using Ribbon
YAML Configuration
Configuration Class
Client Class
Client Class Implementation
Integration with Eureka (Service Discovery)
Using Ribbon in the Amazon AWS Cloud
Summary
Chapter 18. Application Hardening with Netflix Hystrix
Netflix Hystrix
Design Principles
Design Principles (continued)
Cascading Failures
Bulkhead Pattern
Circuit Breaker Pattern
Thread Pooling
Request Caching
Request Collapsing
Fail-Fast
Fallback
Using Hystrix
Circuit Breaker Configuration
Fallback Configuration
Collapser Configuration
Rest Controller and Handler
Collapser Service (Part 1)
How the Collapser Works
Hystrix Monitor
Enable Monitoring
Turbine
The Monitor
Monitor details
Summary
Chapter 19. Edge Components with Netflix Zuul
Zuul is the Gatekeeper
Request Handling
Filters
Filter Architecture
Filter Properties
filterType()
filterOrder()
shouldFilter()
Run()
Cancel Request
Dynamic Filter Loading
Filter Communications
Routing with Eureka and Ribbon
Summary
Chapter 20. Distributed Tracing with Zipkin
Zipkin
Zipkin Features
Architecture
The Collector
Storage
API
GUI Console
Zipkin Console Homepage
View a Trace
Trace Details
Dependencies
Dependency Details
Zipkin in Spring Boot
Zipkin Configuration
Summary
Frequently Asked Questions
What is Spring Framework?
Spring Framework is an open-source application container for Java that supplies many useful features, such as Inversion of Control, Dependency Injection, abstract data access, transaction management, and more. Spring was initially introduced back in 2002 by Rod Johnson as a 30K lines of code framework accompanying his book “Expert One-on-One J2EE Design and Development”. The framework was initially known as “interface21” but was later renamed and released as an open source project under the name “Spring”. You can read the full story at Spring’s blog.
What is Spring Boot?
Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can “just run”. All in all, Spring Boot is a project built on the top of the Spring framework. It provides a simpler and faster way to set up, configure, and run both simple and web-based applications.
In the Spring core framework, you need to configure all the things for yourself. Hence, you can have a lot of configuration files, such as XML descriptors. That’s one out of the main problems that Spring Boot solves for you.
It smartly chooses your dependencies, auto-configures all the features you will want to use, and you can start your application with one click. Furthermore, it also simplifies the deployment process of your application.
What is Inversion of Control (IoC)?
One of Spring’s core features it the usage of the concept Inversion of Control (IoC). IoC is about inverting the flow of control that the traditional programming model used to have in terms of objects at the higher-level handling the creation and management of lower-level objects life cycle. In the IoC programming model, higher-level objects rather receive one or more instances of these dependencies from the calling object or external framework. This is why IOC is also termed Dependency Injection, wherein the dependencies are injected appropriately, and, objects bother themselves solely with the program execution and not with the object creation.
Simply said Inversion of Control (IoC) and Dependency Injection (DI) patterns are all about removing dependencies from your code.
What is the best way to learn Spring Boot?
Web Age Solution’s Spring Boot Training offers the best Spring Boot courses that you need to master the technology. With our live instructor-led courses, we strive hard to make sure your learning objectives are fulfilled.
Our courses are offered as instructor-led, onsite live Spring Boot training which can be carried out locally on customer premises or in Web Age corporate training centers. Remote live training is carried out by way of an interactive, remote desktop.
Can I take Spring Boot Training online?
Yes! Our Spring Boot training is available as “onsite live training” or “remote live training”. Onsite live Spring Boot training in Toronto can be carried out locally on customer premises or in Web Age corporate training centers. Remote live Spring Boot training is carried out by way of an interactive, remote desktop.
Why Choose Web Age Solutions for Spring Training?

Best price in the industry
You won’t find better value in the marketplace. If you do find a lower price, we will beat it.

Various delivery methods
Flexible delivery methods are available depending on your learning style.

Resources
Resources are included for a comprehensive learning experience.
We regularly offer Spring Training classes in these and other cities. Atlanta, Austin, Baltimore, Calgary, Chicago, Cleveland, Dallas, Denver, Detroit, Houston, Jacksonville, Miami, Montreal, New York City, Orlando, Ottawa, Philadelphia, Phoenix, Pittsburgh, Seattle, Toronto, Vancouver, Washington DC.