Mastering Spring Boot 2.0: Build modern, cloud-native, and distributed systems using spring boot

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Author(s): Dinesh Rajput
Publisher: Packt Publishing
Year: 2018

Language: English
Commentary: decrypted from 8FADD307A76876A135D1062EF15112C4 source file
Pages: 380
Tags: Spring Boot, Spring Cloud

Cover
Title Page
Copyright and Credits
Dedication
Packt Upsell
Contributors
Table of Contents
Preface
Chapter 1: Getting Started with Spring Boot 2.0
Introducing Spring Boot
Simplifying Spring application development using Spring Boot
The essential key components of Spring Boot
Spring Boot Starters
Spring Boot Starter Parent POM
Spring Boot auto-configuration
Enabling Spring Boot auto-configuration
Spring Boot CLI
Spring Boot Actuator
Setting up a Spring Boot workspace
Setting up Spring Boot with Maven
Setting up Spring Boot with Gradle
Developing your first Spring Boot application
Using a web interface for Spring Initializr
Creating a Spring Boot project using the STS IDE
Implementing the REST service
New features in Spring Boot 2.0
Summary
Chapter 2: Customizing Auto-Configuration in Spring Boot Application
Understanding auto-configuration
Learning how auto-configuration works
Customizing Spring Boot
Customizing using Spring Boot properties
Replacing generated beans
Disabling specific auto-configuration classes
Changing a library's dependencies
Externalizing configuration with properties
Order of evaluation for overridden properties
Renaming application.properties in the Spring application
Externally configuring application properties
Using the @EnableConfigurationProperties annotation
Fine-tuning with logging
Logging output
Using YAML for configuration
YAML for properties
Multiple profiles inside a single YAML file
Customizing application error pages
Summary
Chapter 3: Getting Started with Spring CLI and Actuator
Getting started with using Spring Boot CLI
Installing the Spring Boot CLI
Manually installing from a downloaded distribution
Installation with SDKMAN!
Installing with OSX Homebrew
MacPorts installation
Command-line completion
Using the Initializr with the Spring Boot CLI
Spring Boot Actuator – taking Application's Insights
Enabling Spring Boot's Actuator in your application
Analyzing the Actuator's endpoints
Exposing configuration details
Exposing metrics endpoints
Exposing application information
Shutting down your application
Customizing your Actuator endpoints
Enabling or disabling endpoints
Changing endpoint IDs
Changing the sensitivity of the Actuator's endpoints
Writing custom health indicators
Creating a custom endpoint
Securing the Actuator endpoints
The Actuator with Spring Boot 2.X
Summary
Chapter 4: Getting Started with Spring Cloud and Configuration
Cloud-native application architecture
Microservices architecture
Microservice benefits
Microservice challenges
Introduction to Spring Cloud
Building blocks of the cloud and microservice applications
Usages of Spring Cloud
Configuring the Spring Cloud application
Creating the configuration producer Spring Cloud Config Server
Project setup and dependencies
Implementing Cloud Config Server
Configuring the application.properties file
Creating a Git repository as configuration storage
Running your configuration application
Configuring multiple repositories using patterns
Authentication
Force-pull property
Creating the configuration consumer Spring Cloud Config client
Summary
Chapter 5: Spring Cloud Netflix and Service Discovery
Introduction to Spring Cloud Netflix
The need for Service Discovery in the microservices architecture
Implementing Service Discovery – Eureka Server
The Maven build configuration file
The Gradle build configuration file
Enabling the Eureka server as a Discovery Service server
Implementing Service Discovery – Eureka clients
Adding the Maven dependencies configuration
The Gradle build configuration
Registering a client with Eureka
Consuming the REST service
Using EurekaClient
Using DiscoveryClient
Client-side load balancing using Netflix Ribbon
Using the registry-aware Spring Cloud Netflix FeignClient client
Summary
Chapter 6: Building Spring Boot RESTful Microservice
Microservices with Spring Boot
Brief introduction to bootstrap.yml and application.yml
A simple microservice example
Creating a discovery service
Creating a microservice (the Producer)
Creating microservice consumers
Load-balanced RestTemplate
Brief introduction to Spring Data
Apache Ignite repository
Spring Data MongoDB
Spring MongoDB data highlights
Spring Data JPA
Summary
Chapter 7: Creating API Gateway with Netflix Zuul Proxy
The need for an API Gateway pattern
Pros of the API Gateway pattern
Cons of the API Gateway pattern
API Gateway pattern components
Implementing API Gateway using Netflix Zuul Proxy
Including Zuul using Maven dependency
Enabling the Zuul service proxy
Configuring Zuul properties
Adding Zuul filters
Registering Zuul filters
Summary
Chapter 8: Simplify HTTP API with Feign Client
Declarative REST client – Feign basics
Including Feign in the cloud application
Overriding Feign defaults
Creating Feign clients
Feign inheritance support
Multiple interfaces
Advanced usage of the Feign client
Feign logging
Exception handling
Custom encoders and decoders
Custom encoder
Custom decoder
Feign and Hystrix
Unit testing Feign clients
Summary
Chapter 9: Building Event-Driven and Asynchronous Reactive Systems
Event-driven architecture patterns
Mediator topology
Broker topology
Introduction to reactive programming
Spring Reactive
ReactiveX
Introduction to Command Query Responsibility Segregation
Introduction to the Event Sourcing pattern
Introduction to Eventual consistency
Building an event-driven Reactive Asynchronous System
Introducing Spring Cloud Streaming
Adding Kafka to your application
Installing and running Kafka
Configuration properties for Kafka
Service used to write to Kafka
Rest API controller
Listening to a Kafka topic
Summary
Chapter 10: Building Resilient Systems Using Hystrix and Turbine
Circuit-breaker pattern
Using the Hystrix library with a reference implementation
Configuring Hystrix in your application
Maven dependency
Enabling circuit-breaker
Adding the Hystrix annotation in services
Error propagation
Implementing a REST controller in customer service
Building and testing customer service
Customizing the default configuration
Hystrix Metrics Stream
Implementing Hystrix Dashboard in our project
Turbine dashboard
Turbine stream
REST consumer with Hystrix and Feign
Summary
Chapter 11: Testing Spring Boot Application
Test-driven development
Unit testing
Advantages
Disadvantages
Other mock libraries
Integration testing
Benefits of testing with Spring
Activating profiles for a test class
JUnit tests for the Spring Boot application
Using Mockito for mocking services
Postman for testing RESTful service contracts
Summary
Chapter 12: Containerizing Microservice
Introducing containers to the microservice architecture
Virtual machines versus containers
Benefits of a container-oriented approach
Drawbacks of a container-oriented approach
Key concepts of the containers-oriented approach
Getting started with Docker
Installing Docker
Installing Docker on Linux
Installing Docker on Windows
Docker commands
Container-specific commands
Docker architecture
Docker Engine
Docker container
Writing Dockerfile
Dockerizing any Spring Boot application
Creating a Docker image using Maven
Getting started with Docker Compose
Installing Docker Compose
Using Docker Compose
Writing a docker-compose file
Orchestration using a docker-compose file
Scaling containers using docker-compose and load balancing
Introducing Kubernetes
Summary
Chapter 13: API Management
API Management
Advantages of using API Management software tools
API Management tools
Rate limiting
Implementing rate limiting
Learning about KONG
Microservice REST APIs with the KONG architecture
Using APIs without the KONG architecture
Installing KONG
Using the KONG API
Features of the KONG API
Swagger
Usage of Swagger
Using Swagger in a microservice
Adding a Maven dependency
Configuring Swagger 2 in your project
Configuring Swagger UI in your project
Customizing the Swagger UI meta-configuration
Filtering an API from Swagger's documentation
Customizing with Swagger annotations
Advantages of Swagger
Summary
Chapter 14: Deploying in Cloud (AWS)
Spinning up an AWS EC2 instance
Microservices architecture on AWS
Publishing microservices to the Docker Hub
Installing Docker on AWS EC2
Running microservices on AWS EC2
Summary
Chapter 15: Production Ready Service Monitoring and Best Practices
Monitoring containers
Logging challenges for the microservices architecture
Centralized logging solution for the microservices architecture
Log aggregation using the ELK stack
Install Elasticsearch
Install Logstash
Install Kibana
Requesting tracing using Sleuth
Requesting tracing with Zipkin
Adding the Zipkin server to your machine
Summary
Other Books You May Enjoy
Index