Mastering Spring 5.0
5/5
()
About this ebook
- Explore the new features and components in Spring
- Evolve towards micro services and cloud native applications
- Gain powerful insights into advanced concepts of Spring and Spring Boot to develop applications more effectively
- Understand the basics of Kotlin and use it to develop a quick service with Spring Boot Who This Book Is For
This book is for an experienced Java developer who knows the basics of Spring, and wants to learn how to use Spring Boot to build applications and deploy them to the cloud.
Related to Mastering Spring 5.0
Related ebooks
Spring Data Rating: 0 out of 5 stars0 ratingsSpring Essentials Rating: 0 out of 5 stars0 ratingsBuilding a RESTful Web Service with Spring Rating: 5 out of 5 stars5/5Spring Boot Cookbook Rating: 0 out of 5 stars0 ratingsJava 9 Concurrency Cookbook - Second Edition Rating: 0 out of 5 stars0 ratingsBuilding Scalable Apps with Redis and Node.js Rating: 0 out of 5 stars0 ratingsMastering Java EE Development with WildFly Rating: 0 out of 5 stars0 ratingsHands-On Microservices with Kubernetes: Build, deploy, and manage scalable microservices on Kubernetes Rating: 5 out of 5 stars5/5ASP.NET Core 3 and React: Hands-On full stack web development using ASP.NET Core, React, and TypeScript 3 Rating: 0 out of 5 stars0 ratingsMastering JavaScript Design Patterns - Second Edition Rating: 5 out of 5 stars5/5Learn Java 12 Programming: A step-by-step guide to learning essential concepts in Java SE 10, 11, and 12 Rating: 0 out of 5 stars0 ratingsNode.js By Example Rating: 2 out of 5 stars2/5ASP.NET Web API Security Essentials Rating: 0 out of 5 stars0 ratingsInstant OSGi Starter Rating: 0 out of 5 stars0 ratingsDeveloping with Docker Rating: 5 out of 5 stars5/5WebSocket Essentials – Building Apps with HTML5 WebSockets Rating: 0 out of 5 stars0 ratingsRESTful Web API Design with Node.js - Second Edition Rating: 1 out of 5 stars1/5Angular Services Rating: 0 out of 5 stars0 ratingsDistributed Computing in Java 9 Rating: 0 out of 5 stars0 ratingsSpring Microservices Rating: 0 out of 5 stars0 ratingsSpring Boot in Action Rating: 0 out of 5 stars0 ratingsSpring in Action, Sixth Edition Rating: 5 out of 5 stars5/5JUnit in Action Rating: 0 out of 5 stars0 ratings
Software Development & Engineering For You
OneNote: The Ultimate Guide on How to Use Microsoft OneNote for Getting Things Done Rating: 1 out of 5 stars1/5SQL For Dummies Rating: 0 out of 5 stars0 ratingsGrokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5Hand Lettering on the iPad with Procreate: Ideas and Lessons for Modern and Vintage Lettering Rating: 4 out of 5 stars4/5Python For Dummies Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5How to Write Effective Emails at Work Rating: 4 out of 5 stars4/5PYTHON: Practical Python Programming For Beginners & Experts With Hands-on Project Rating: 5 out of 5 stars5/5Level Up! The Guide to Great Video Game Design Rating: 4 out of 5 stars4/5Git Essentials Rating: 4 out of 5 stars4/5The Essential Persona Lifecycle: Your Guide to Building and Using Personas Rating: 4 out of 5 stars4/5How Do I Do That In InDesign? Rating: 5 out of 5 stars5/5Data Visualization: a successful design process Rating: 4 out of 5 stars4/5Ry's Git Tutorial Rating: 0 out of 5 stars0 ratingsModern C++ for Absolute Beginners: A Friendly Introduction to C++ Programming Language and C++11 to C++20 Standards Rating: 0 out of 5 stars0 ratingsAndroid App Development For Dummies Rating: 0 out of 5 stars0 ratingsThe Inmates Are Running the Asylum (Review and Analysis of Cooper's Book) Rating: 4 out of 5 stars4/5Flow: A Handbook for Change-Makers, Mavericks, Innovators and Leaders Rating: 0 out of 5 stars0 ratingsHow Do I Do That in Photoshop?: The Quickest Ways to Do the Things You Want to Do, Right Now! Rating: 4 out of 5 stars4/5Reversing: Secrets of Reverse Engineering Rating: 4 out of 5 stars4/5Learning R Programming Rating: 5 out of 5 stars5/5Adobe Illustrator CC For Dummies Rating: 5 out of 5 stars5/5Programming Problems: A Primer for The Technical Interview Rating: 4 out of 5 stars4/5Learning Java by Building Android Games Rating: 0 out of 5 stars0 ratingsTest-Driven iOS Development with Swift Rating: 5 out of 5 stars5/5Beginning Programming For Dummies Rating: 4 out of 5 stars4/5
Reviews for Mastering Spring 5.0
1 rating0 reviews
Book preview
Mastering Spring 5.0 - Ranga Rao Karanam
Mastering Spring 5.0
A comprehensive guide to becoming an expert in the Spring Framework
This book is based on Spring Version 5.0 RC1
Ranga Rao Karanam
BIRMINGHAM - MUMBAI
Mastering Spring 5.0
Copyright © 2017 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: June 2017
Production reference: 1240617
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham
B3 2PB, UK.
ISBN 978-1-78712-317-5
www.packtpub.com
Credits
About the Author
Ranga Rao Karanam is a programmer, trainer, and architect. His areas of interest include Cloud Native Applications, microservices, evolutionary design, high-quality code, DevOps, BDD, TDD, and refactoring. He loves consulting for start-ups on developing scalable, component-based Cloud Native applications, and following modern development practices such as BDD, continuous delivery, and DevOps. He loves the freedom the Spring Framework brings to developing enterprise Java applications.
Ranga started in28minutes with the vision of creating high-quality courses on developing Cloud Native Java applications. He is looking forward to enhancing his already considerable success--75,000 students on Udemy and 35,000 subscribers on YouTube.
Ranga likes to play cricket and go hiking. His dream is to spend a year hiking the Himalayas.
My family and best friends; thank you for everything!
About the Reviewer
Jarosław Krochmalski is a passionate software designer and developer who specializes in the financial business domain. He has over 12 years of experience in software development. He is a clean-code and software craftsmanship enthusiast. He is a Certified ScrumMaster and a fan of Agile. His professional interests include new technologies in web application development, design patterns, enterprise architecture, and integration patterns. He likes to experiment with NoSQL and cloud computing. Jaroslaw has been working with IDEA since its first release and has observed the IDE grow and mature. He has been designing and developing software professionally since 2000 and has been using Java as his primary programming language since 2002. In the past, he worked for companies such as Kredyt Bank (KBC) and Bank BPS on many large-scale projects, such as international money orders, express payments, and collection systems. He currently works as a consultant for the Danish company 7N as an infrastructure architect for the Nykredit bank. You can reach him via Twitter at @jkroch or by email at jarek@finsys.pl.
He has authored the books, IntelliJ Idea Essentials, Developing with Docker, and Docker and Kubernetes for Java Developers by Packt, and he has reviewed another book by Packt, Spring Essentials.
Hello to all my friends in Finsys, 7N, and Nykredit-keep up the good work!
www.PacktPub.com
For support files and downloads related to your book, please visit www.PacktPub.com.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at service packtpub.com for more details.
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
https://www.packtpub.com/mapt
Get the most in-demand software skills with Mapt. Mapt gives you full access to all Packt books and video courses, as well as industry-leading tools to help you plan your personal development and advance your career.
Why subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via a web browser
Customer Feedback
Thanks for purchasing this Packt book. At Packt, quality is at the heart of our editorial process. To help us improve, please leave us an honest review on this book's Amazon page at https://www.amazon.com/dp/1787123170.
If you'd like to join our team of regular reviewers, you can e-mail us at customerreviews@packtpub.com. We award our regular reviewers with free eBooks and videos in exchange for their valuable feedback. Help us be relentless in improving our products!
Table of Contents
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
Evolution to Spring Framework 5.0
Spring Framework
Problems with EJB
Why is Spring Framework popular?
Simplified unit testing
Reduction in plumbing code
How does Spring Framework do this magic?
Architectural flexibility
Keep up with changing times
Spring modules
Spring Core Container
Cross-cutting concerns
Web
Business
Data
Spring Projects
Spring Boot
Spring Cloud
Spring Data
Spring Batch
Spring Security
Spring HATEOAS
New features in Spring Framework 5.0
Baseline upgrades
JDK 9 runtime compatibility
Usage of JDK 8 features in Spring Framework code
Reactive programming support
Functional web framework
Java modularity with Jigsaw
Kotlin support
Dropped features
Spring Boot 2.0 new features
Summary
Dependency Injection
Understanding dependency injection
Understanding dependencies
The Spring IoC container
Defining beans and wiring
Creating a Spring IoC container
Java configuration for the application context
A quick review
Launching the application context with Java configuration
The console log
The XML configuration for the application context
Defining the XML Spring configuration
Launching an application context with the XML configuration
Writing JUnit using the Spring context
Unit testing with mocks
Container managed beans
Dependency injection types
The setter injection
The constructor injection
Constructor versus setter injection
Spring bean scopes
Java versus XML configuration
The @Autowired annotation in depth
The @Primary annotation
The @Qualifier annotation
Other important Spring annotations
Exploring Contexts and dependency injection
An example of CDI
Summary
Building a Web Application with Spring MVC
Java web application architecture
Model 1 architecture
Model 2 architecture
Model 2 Front Controller architecture
Basic flows
Basic setup
Adding dependency for Spring MVC
Adding DispatcherServlet to web.xml
Creating Spring context
Flow 1 - Simple controller flow without View
Creating a Spring MVC controller
Running the web application
Unit testing
Setting up the Controller to test
Writing the Test method
Flow 2 - Simple controller flow with a View
Spring MVC controller
Creating a View - a JSP
View resolver
Unit testing
Setting up the Controller to test
Writing the Test method
Flow 3 - Controller redirecting to a View with Model
Spring MVC controller
Creating a View
Unit testing
Setting up the Controller to test
Writing the Test method
Flow 4 - Controller redirecting to a View with ModelAndView
Spring MVC controller
Creating a View
Unit testing
Flow 5 - Controller redirecting to a View with a form
Creating a command or form backing object
The Controller method to show the form
Creating the View with a form
Controller get method to handle form submit
Unit testing
Flow 6 - Adding validation to the previous flow
Hibernate Validator dependency
Simple validations on the bean
Custom validations
Unit testing
Controller setup
The Test method
An overview of Spring MVC
Important features
How it works
Important concepts behind Spring MVC
RequestMapping
Examples of request mapping
Example 1
Example 2
Example 3
Request Mapping methods - supported method arguments
RequestMapping methods - supported return types
View resolution
Configuring JSP view resolver
Configuring Freemarker
Handler mappings and Interceptors
Defining a HandlerInterceptor
Mapping HandlerInterceptor to handlers
Model attributes
Session attributes
Putting an attribute in the session
Reading an attribute from the session
Removing an attribute from the session
InitBinders
The @ControllerAdvice annotation
Spring MVC - advanced features
Exception handling
Common exception handling across controllers
The error view
Specific exception handling in a Controller
Internationalization
Message bundle setup
Configuring a SessionLocaleResolver
Configuring a CookieLocaleResolver
Integration testing Spring controllers
Serving static resources
Exposing static content
Caching static content
Enabling GZip compression of static content
Integrating Spring MVC with Bootstrap
Bootstrap WebJar as Maven dependency
Configure Spring MVC resource handler to deliver WebJar static content
Using Bootstrap resources in JSP
Spring Security
Adding Spring Security dependency
Configuring a filter to intercept all requests
Logout
Summary
Evolution toward Microservices and Cloud-Native Applications
Typical web application architecture with Spring
Web layer
Web application - rendering an HTML View
RESTful services
Business layer
Data layer
Integration layer
Cross-cutting concerns
Problems solved by Spring
Loose coupling and testability
Plumbing code
Lightweight architecture
Architecture flexibility
Simplified implementation of cross-cutting concerns
Design patterns for free
Application development goals
Speed
Safety
Reliability
Availability
Security
Performance
High resilience
Scalability
Challenges with monolithic applications
Long release cycles
Difficult to scale
Adapting new technologies
Adapting new methodologies
Adapting modern development practices
Understanding microservices
What is a microservice?
The microservice architecture
Microservice characteristics
Small and lightweight microservices
Interoperability with message-based communication
Capability-aligned microservices
Independently deployable units
Stateless
Automated build and release process
Event-driven architecture
Approach 1 - sequential approach
Approach 2 - event-driven approach
Independent teams
Microservice advantages
Faster time to market
Technology evolution
Availability and scaling
Team dynamics
Microservice challenges
Increased need for automation
Defining the boundaries of subsystems
Visibility and monitoring
Fault tolerance
Eventual consistency
Shared capabilities (enterprise level)
Increased need for operations teams
Cloud-Native applications
Twelve-Factor App
Maintain one code base
Dependencies
Config
Backing services
Build, release, run
Stateless
Port binding
Concurrency
Disposability
Environment parity
Logs as event streams
No distinction of admin processes
Spring projects
Spring Boot
Spring Cloud
Summary
Spring Framework
Problems with EJB
Why is Spring Framework popular?
Simplified unit testing
Reduction in plumbing code
How does Spring Framework do this magic?
Architectural flexibility
Keep up with changing times
Spring modules
Spring Core Container
Cross-cutting concerns
Web
Business
Data
Spring Projects
Spring Boot
Spring Cloud
Spring Data
Spring Batch
Spring Security
Spring HATEOAS
New features in Spring Framework 5.0
Baseline upgrades
JDK 9 runtime compatibility
Usage of JDK 8 features in Spring Framework code
Reactive programming support
Functional web framework
Java modularity with Jigsaw
Kotlin support
Dropped features
Spring Boot 2.0 new features
Summary
Building Microservices with Spring Boot
What is Spring Boot?
Building a quick prototype for a microservice
Primary goals
Nonfunctional features
Spring Boot Hello World
Configure spring-boot-starter-parent
spring-boot-starter-parent
Configure pom.xml with the required starter projects
Understanding starter projects
Configuring spring-boot-maven-plugin
Creating your first Spring Boot launch class
SpringApplication class
The @SpringBootApplication annotation
Running our Hello World application
Auto-configuration
Starter projects
What is REST?
First REST service
Simple method returning string
Unit testing
Integration testing
Simple REST method returning an object
Executing a request
Unit testing
Integration testing
Get method with path variables
Executing a request
Unit testing
Integration testing
Creating a todo resource
Request methods, operations, and URIs
Beans and services
Retrieving a Todo list
Executing the service
Unit testing
Integration testing
Retrieving details for a specific Todo
Executing the service
Unit testing
Integration testing
Adding a Todo
Postman
Executing the POST service
Unit testing
Integration testing
Spring Initializr
Creating your first Spring Initializr project
pom.xml
FirstSpringInitializrApplication.java class
FirstSpringInitializrApplicationTests class
A quick peek into auto-configuration
Summary
Extending Microservices
Exception handling
Spring Boot default exception handling
Nonexistent resource
Resource throwing an exception
Throwing a custom exception
Customizing the exception message
Response status
HATEOAS
Sending HATEOAS links in response
Spring Boot starter HATEOAS
Validation
Enabling validation on ;the controller method
Defining validations on the bean
Unit testing validations
Documenting REST services
Generating ;a Swagger specification
Swagger UI
Customizing Swagger documentation using annotations
Securing REST services with Spring Security
Adding Spring Security starter
Basic authentication
Integration testing
Unit testing
OAuth 2 authentication
High-level ;flow
Implementing OAuth 2 authentication for our service
Setting up authorization and resource servers
Executing OAuth requests
Obtaining an access token
Executing the request using the access token
Integration test
Internationalization
Caching
Spring-boot-starter-cache
Enabling caching
Caching data
JSR-107 caching annotations
Auto-detection order
Summary
Advanced Spring Boot Features
Externalised configuration
Customizing frameworks through application.properties
Logging
Embedded server configuration
Spring MVC
Spring starter security
Data Sources, JDBC and JPA
Other configuration options
Custom properties in application.properties
Configuration properties - type-safe Configuration Management
Profiles
Profiles-based Bean configuration
Other options ;for application configuration values
YAML configuration
Embedded servers
Switching to Jetty and Undertow
Building a WAR file
Developer tools
Live reload
Spring Boot Actuator
HAL Browser
Configuration properties
Environment details
Health
Mappings
Beans
Metrics
Auto-configuration
Debugging
Deploying ;an application to Cloud
Cloud Foundry
Summary
Spring Data
Background - data stores
Spring Data
Spring Data Commons
Repository
The CrudRepository interface
The PagingAndSortingRepository interface
Spring Data JPA
Spring Data JPA example
New project with Starter Data JPA
Entities
The SpringBootApplication class
Populating some data
A simple repository
Unit test
The CrudRepository interface
Unit test
The PagingAndSortingRepository interface
Unit tests
Query methods
Queries
Named Parameters
Named Query
Native query
Spring Data Rest
The GET method
The POST method
The search resource
Big Data
MongoDB
Unit test
Summary
Spring Cloud
Introducing Spring Cloud
Spring Cloud Netflix
Demo microservices setup
Microservice A
Service consumer
Ports
Centralized microservice configuration
Problem statement
Solution
Options
Spring Cloud Config
Implementing Spring Cloud Config Server
Setting up Spring Cloud Config Server
Connecting Spring Cloud Config Server to a local Git repository
Creating an environment-specific configuration
Spring Cloud Config Client
Spring Cloud Bus
The need for Spring Cloud Bus
Propogating configuration changes using Spring Cloud Bus
Implementation
Declarative REST Client - Feign
Load balancing
Ribbon
Implementation
The Name server
Limitations of hard coding microservice URLs
Workings of Name server
Options
Implementation
Setting up a Eureka Server
Registering microservices with Eureka
Connecting the service consumer microservice with Eureka
API Gateways
Implementing client-side load balancing with Zuul
Setting up a new Zuul API Gateway Server
Zuul custom filters
Invoking microservices through Zuul
Configuring service consumer to use Zuul API gateway
Distributed tracing
Distributed tracing options
Implementing Spring Cloud Sleuth and Zipkin
Integrating microservice components with Spring Cloud Sleuth
Setting up Zipkin Distributed Tracing Server
Integrating microservice components with Zipkin
Hystrix - fault tolerance
Implementation
Summary
Spring Cloud Data Flow
Message-based asynchronous communication
Complexities of asynchronous communication
Spring projects for asynchronous messages
Spring Integration
Spring Cloud Stream
Spring Cloud Data Flow
Spring Cloud Stream
Spring Cloud Stream architecture
Event processing - stock trading example
Model for stock trading example
The source application
Processor
Sink
Spring Cloud Data Flow
High-level architecture
Implementing Spring Cloud Data Flow
Setting up Spring Cloud Data Flow server
Setting up Data Flow Shell project
Configuring the apps
Configuring the stream
Deploying the stream
Log messages - setting up connections to the message factory
Log messages - the flow of events
Spring Cloud Data Flow REST APIs
Spring Cloud Task
Summary
Reactive Programming
The Reactive Manifesto
Characteristics of Reactive Systems
Reactive use case - a stock price page
The traditional approach
The reactive approach
Comparison between the traditional and reactive approaches
Reactive programming in Java
Reactive streams
Reactor
Mono
Flux
Spring Web Reactive
Creating a project using Spring Initializr
Creating a Reactive Controller
Creating an HTML view
Launching SpringReactiveExampleApplication
Reactive databases
Integrating Spring Boot Reactive MongoDB Starter
Creating a model object - a stock document
Creating a ReactiveCrudRepository
Initialising stock data using the Command Line Runner
Creating Reactive methods in Rest Controller
Updating the view to subscribe to the event stream
Launching SpringReactiveExampleApplication
Summary
Spring Best Practices
Maven standard directory layout
Layered architecture
Recommended practices
Separate API and impl for important layers
Exception handling
Spring's approach to exception handling
The recommended approach
Keeping your Spring configuration light
Using the basePackageClasses attribute in ComponentScan
Not using version numbers in schema references
Preferring constructor injection over setter injection for mandatory dependencies
Managing dependency versions for Spring Projects
Unit testing
The business layer
Web layer
The data layer
Other best practices
Integration testing
Spring Session
Example
Adding dependencies for Spring Session
Configuring Filter to replacing HttpSession with Spring Session
Enabling filtering for Tomcat by extending AbstractHttpSessionApplicationInitializer
Caching
Adding the Spring Boot Starter Cache dependency
Adding caching annotations
Logging
Logback
Log4j2
Framework independent configuration
Summary
Working with Kotlin in Spring
Kotlin
Kotlin versus Java
Variables and type inference
Variables and immutability
Type system
Functions
Arrays
Collections
No c
Data class
Creating a Kotlin project in Eclipse
Kotlin plugin
Creating a Kotlin project
Creating a Kotlin class
Running a Kotlin class
Creating a Spring Boot project using Kotlin
Dependencies and plugins
Spring Boot application class
Spring Boot application test class
Implementing a REST service using Kotlin
Simple method returning a string
Unit testing
Integration testing
Simple REST method returning an object
Executing a request
Unit testing
Integration testing
Get method with path variables
Executing a request
Unit testing
Integration testing
Summary
Preface
Spring 5.0 is due to arrive with a myriad of new and exciting features that will change the way we've used the framework so far. This book will show you this evolution--from solving the problems of testable applications to building distributed applications on the Cloud.
The book begins with an insight into the new features in Spring 5.0, and shows you how to build an application using Spring MVC. You will then get a thorough understanding of how to build and extend microservices using the Spring Framework. You will also understand how to build and deploy Cloud applications. You will realize how application architectures have evolved from monoliths to those built around microservices. The advanced features of Spring Boot will also be covered and displayed through powerful examples.
By the end of this book, you will be equipped with the knowledge and best practices to develop applications with the Spring Framework.
What this book covers
Chapter 1, Evolution to Spring Framework 5.0, takes you through the evolution of the Spring Framework, ranging from its initial versions to Spring 5.0. Initially, Spring was used to develop testable applications using dependency injection and core modules. Recent Spring Projects, such as Spring Boot, Spring Cloud, Spring Cloud Data Flow--deal with application infrastructure and moving applications to Cloud. We get an overview of different Spring modules and projects.
Chapter 2, Dependency Injection, dives deep into dependency injection. We will look at different kinds of dependency injection methods available in Spring, and how auto-wiring makes your life easy. We will also take a quick look into unit testing.
Chapter 3, Building a Web Application with Spring MVC, gives a quick overview of building a web application with Spring MVC.
Chapter 4, Evolution toward Microservices and Cloud-Native Applications, explains the evolution of application architectures in the last decade. We will understand why microservices and Cloud Native applications are needed and get a quick overview of the different Spring projects that help us build Cloud-Native applications.
Chapter 5, Building Microservices with Spring Boot, discusses how Spring Boot takes away the complexity in creating production-grade Spring-based applications. It makes it easy to get started with Spring-based projects and provides easy integration with third-party libraries. In this chapter, we will take the students on a journey with Spring Boot. We will start with implementing a basic web service and then move on to adding caching, exception handling, HATEOAS, and internationalization, while making use of different features from the Spring Framework.
Chapter 6, Extending Microservices, focuses on adding more advanced features to the microservices that we built in Chapter 4, Evolution toward Microservices and Cloud-Native Applications.
Chapter 7, Advanced Spring Boot Features, takes a look at the advanced features in Spring Boot. You will learn how to monitor a microservice with a Spring Boot Actuator. Then, you will deploy the microservice to Cloud. You will also learn how to develop more effectively with the developer tools provided by Spring Boot.
Chapter 8, Spring Data, discusses the Spring Data module. We will develop simple applications to integrate Spring with JPA and Big Data technologies.
Chapter 9, Spring Cloud, discusses the distributed systems in the Cloud that have common problems, configuration management, service discovery, circuit breakers, and intelligent routing. In this chapter, you will learn how Spring Cloud helps you develop solutions for these common patterns. These solutions should work well on the Cloud as well as developer local systems.
Chapter 10, Spring Cloud Data Flow, talks about the Spring Cloud Data Flow, which offers a collection of patterns and best practices for microservices-based distributed streaming and batch data pipelines. In this chapter, we will understand the basics of Spring Cloud Data Flow and use it to build basic data flow use cases.
Chapter 11, Reactive Programming, explores programming with asynchronous data streams. In this chapter, we will understand Reactive programming and take a quick look at the features provided by the Spring Framework.
Chapter 12, Spring Best Practices, helps you understand best practices in developing enterprise applications with Spring related to unit testing, integration testing, maintaining Spring configuration, and more.
Chapter 13,Working with Kotlin in Spring, introduces you to a JVM language gaining quick popularity--Kotlin. We will discuss how to setup a Kotlin project in Eclipse. We will create a new Spring Boot project using Kotlin and implement a couple of basic services with unit and integration testing.
What you need for this book
To be able to run examples from this book, you will need the following tools:
Java 8
Eclipse IDE
Postman
We will use Maven embedded into Eclipse IDE to download all the dependencies that are needed.
Who this book is for
This book is for experienced Java developers who knows the basics of Spring, and wants to learn how to use Spring Boot to build applications and deploy them to the Cloud.
Conventions
In this book, you will find a number of text styles that distinguish between different kinds of information. Here are some examples of these styles and an explanation of their meaning.
Code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, and user input are shown as follows: Configure spring-boot-starter-parent in your pom.xml file
.
A block of code is set as follows:
Any command-line input or output is written as follows:
New terms and important words are shown in bold. Words that you see on the screen, for example, in menus or dialog boxes, appear in the text like this: Provide the details and click on Generate Project.
Warnings or important notes appear in a box like this.
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book-what you liked or disliked. Reader feedback is important for us as it helps us develop titles that you will really get the most out of.
To send us general feedback, simply e-mail feedback@packtpub.com, and mention the book's title in the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide at www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Downloading the example code
You can download the example code files for this book from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
You can download the code files by following these steps:
Log in or register to our website using your e-mail address and password.
Hover the mouse pointer on the SUPPORT tab at the top.
Click on Code Downloads & Errata.
Enter the name of the book in the Search box.
Select the book for which you're looking to download the code files.
Choose from the drop-down menu where you purchased this book from.
Click on Code Download.
Once the file is downloaded, please make sure that you unzip or extract the folder using the latest version of:
WinRAR / 7-Zip for Windows
Zipeg / iZip / UnRarX for Mac
7-Zip / PeaZip for Linux
The code bundle for the book is also hosted on GitHub at https://github.com/PacktPublishing/Mastering-Spring-5.0. We also have other code bundles from our rich catalog of books and videos available at https://github.com/PacktPublishing/. Check them out!
Errata
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code--we would be grateful if you could report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the Errata Submission Form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website or added to any list of existing errata under the Errata section of that title.
To view the previously submitted errata, go to https://www.packtpub.com/books/content/support and enter the name of the book in the search field. The required information will appear under the Errata section.
Piracy
Piracy of copyrighted material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.
Please contact us at copyright@packtpub.com with a link to the suspected