Spring Boot Cookbook
By Antonov Alex
()
About this ebook
Related to Spring Boot Cookbook
Related ebooks
Building a RESTful Web Service with Spring Rating: 5 out of 5 stars5/5Mastering Hibernate Rating: 0 out of 5 stars0 ratingsMastering Spring 5.0 Rating: 5 out of 5 stars5/5Java 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 ratingsLearn 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 ratingsMastering Java EE Development with WildFly Rating: 0 out of 5 stars0 ratingsLearn React Hooks: Build and refactor modern React.js applications using Hooks Rating: 0 out of 5 stars0 ratingsExpress Web Application Development Rating: 3 out of 5 stars3/5Learning Elasticsearch 7.x: Index, Analyze, Search and Aggregate Your Data Using Elasticsearch (English Edition) Rating: 0 out of 5 stars0 ratingsMockito Essentials Rating: 3 out of 5 stars3/5Hacking with Spring Boot 2.4: Classic Edition: Hacking with Spring Boot, #2 Rating: 0 out of 5 stars0 ratingsReactJS for Jobseekers: The Only Guide You Need to Learn React and Crack Interviews (English Edition) Rating: 0 out of 5 stars0 ratings100+ Solutions in Java Rating: 0 out of 5 stars0 ratingsMastering JavaScript Design Patterns Rating: 4 out of 5 stars4/5Jakarta EE for Java Developers: Build Cloud-Native and Enterprise Applications Using a High-Performance Enterprise Java Platform Rating: 0 out of 5 stars0 ratingsReactive State for Angular with NgRx Rating: 0 out of 5 stars0 ratingsRESTful Web API Design with Node.js - Second Edition Rating: 1 out of 5 stars1/5AngularJS Deployment Essentials Rating: 0 out of 5 stars0 ratingsSpring Boot 2: How To Get Started and Build a Microservice - Third Edition Rating: 5 out of 5 stars5/5Spring Boot and Single-Page Applications: Securing Your API with a Single-Page Application Frontend - Second Edition Rating: 0 out of 5 stars0 ratingsSpring Security 3.x Cookbook Rating: 0 out of 5 stars0 ratingsSpring and Spring Boot Interview Questions and Answers. Tech interviewer’s notes Rating: 5 out of 5 stars5/5Mastering Unit Testing Using Mockito and JUnit Rating: 0 out of 5 stars0 ratings
Internet & Web For You
More Porn - Faster!: 50 Tips & Tools for Faster and More Efficient Porn Browsing Rating: 3 out of 5 stars3/5The Mega Box: The Ultimate Guide to the Best Free Resources on the Internet Rating: 4 out of 5 stars4/5The $1,000,000 Web Designer Guide: A Practical Guide for Wealth and Freedom as an Online Freelancer Rating: 5 out of 5 stars5/5Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5The Logo Brainstorm Book: A Comprehensive Guide for Exploring Design Directions Rating: 4 out of 5 stars4/5Coding For Dummies Rating: 5 out of 5 stars5/5The Digital Marketing Handbook: A Step-By-Step Guide to Creating Websites That Sell Rating: 5 out of 5 stars5/5Stop Asking Questions: How to Lead High-Impact Interviews and Learn Anything from Anyone Rating: 5 out of 5 stars5/5Cybersecurity For Dummies Rating: 4 out of 5 stars4/5Podcasting For Dummies Rating: 4 out of 5 stars4/5Surveillance and Surveillance Detection: A CIA Insider's Guide Rating: 0 out of 5 stars0 ratingsWireless Hacking 101 Rating: 4 out of 5 stars4/5The Designer's Web Handbook: What You Need to Know to Create for the Web Rating: 0 out of 5 stars0 ratingsSocial Engineering: The Science of Human Hacking Rating: 3 out of 5 stars3/5Hacking : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Ethical Hacking Rating: 5 out of 5 stars5/5Tor and the Dark Art of Anonymity Rating: 5 out of 5 stars5/5Create Something Awesome: How Creators are Profiting from Their Passion in the Creator Economy Rating: 0 out of 5 stars0 ratingsHow To Make Money Blogging: How I Replaced My Day-Job With My Blog and How You Can Start A Blog Today Rating: 4 out of 5 stars4/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5Get Rich or Lie Trying: Ambition and Deceit in the New Influencer Economy Rating: 0 out of 5 stars0 ratingsMike Meyers' CompTIA Security+ Certification Guide, Third Edition (Exam SY0-601) Rating: 5 out of 5 stars5/5200+ Ways to Protect Your Privacy: Simple Ways to Prevent Hacks and Protect Your Privacy--On and Offline Rating: 0 out of 5 stars0 ratingsSix Figure Blogging Blueprint Rating: 5 out of 5 stars5/5The Beginner's Affiliate Marketing Blueprint Rating: 4 out of 5 stars4/5Python QuickStart Guide: The Simplified Beginner's Guide to Python Programming Using Hands-On Projects and Real-World Applications Rating: 0 out of 5 stars0 ratingsHow to Disappear and Live Off the Grid: A CIA Insider's Guide Rating: 0 out of 5 stars0 ratingsSix Figure Blogging In 3 Months Rating: 4 out of 5 stars4/5How To Start A Podcast Rating: 4 out of 5 stars4/5
Reviews for Spring Boot Cookbook
0 ratings0 reviews
Book preview
Spring Boot Cookbook - Antonov Alex
Table of Contents
Spring Boot Cookbook
Credits
About the Author
Acknowledgment
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why Subscribe?
Free Access for Packt account holders
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
1. Getting Started with Spring Boot
Introduction
Using a Spring Boot template and starters
How to do it…
How it works…
Creating a simple application
How to do it…
How it works…
Launching an application using Gradle
How to do it…
How it works…
Using the command-line runners
How to do it…
How it works…
Setting up a database connection
Getting ready
How to do it…
How it works…
Setting up a data repository service
How to do it…
How it works…
Scheduling executors
Getting ready
How to do it…
How it works…
2. Configuring Web Applications
Creating a basic RESTful application
How to do it…
How it works…
Creating a Spring Data REST service
How to do it…
How it works…
Configuring custom servlet filters
How to do it…
How it works…
Configuring custom interceptors
How to do it…
How it works…
Configuring custom HttpMessageConverters
How to do it…
How it works…
Configuring custom PropertyEditors
How to do it…
How it works…
Configuring custom type Formatters
How to do it…
How it works…
3. Web Framework Behavior Tuning
Introduction
Configuring route matching patterns
How to do it…
How it works…
Configuring custom static path mappings
How to do it…
How it works…
Tuning Tomcat via EmbeddedServletContainerCustomizer
How to do it…
How it works…
Choosing embedded servlet containers
How to do it…
How it works…
Adding custom connectors
Getting ready
How to do it…
How it works…
4. Writing Custom Spring Boot Starters
Introduction
Understanding Spring Boot autoconfiguration
How to do it…
How it works…
Creating a custom Spring Boot autoconfiguration starter
How to do it…
How it works…
Configuring custom conditional bean instantiations
How to do it…
How it works…
Using custom @Enable* annotations to toggle configurations
How to do it…
How it works…
5. Application Testing
Introduction
Creating tests for Spring MVC Controllers
How to do it…
How it works…
Automatically configuring the database schema and populating it with data
How to do it…
How it works…
Initializing the database with Spring JPA and Hibernate
Initializing the database with Spring JDBC
Creating tests using in-memory database with data fixtures
How to do it…
How it works…
Creating tests using Mockito to mock DB
How to do it…
How it works…
Writing tests using Cucumber
How to do it…
How it works…
Writing tests using Spock
How to do it…
How it works…
6. Application Packaging and Deployment
Introduction
Creating a Spring Boot executable JAR
How to do it…
How it works…
Creating Docker images
How to do it…
How it works…
Building self-executing binaries
Getting ready
How to do it…
How it works…
Spring Boot environment config hierarchy and precedence
How to do it…
How it works…
Externalizing environmental config using property files
How to do it…
How it works…
Externalizing environmental config using environment variables
How to do it…
How it works…
Externalizing environmental config using Java system properties
How to do it…
How it works…
Setting up Consul
How to do it…
How it works…
Externalizing environmental config using Consul and envconsul
Getting ready
How to do it…
How it works…
7. Health Monitoring and Data Visualization
Introduction
Writing custom health indicators
How to do it…
How it works…
Emitting metrics
Getting ready
How to do it…
How it works…
Monitoring Spring Boot via JMX
Getting ready
How to do it…
How it works…
Management of Spring Boot via CRaSH and writing custom remote shell commands
How to do it…
How it works…
Integrating Codahale/Dropwizard metrics with Graphite
Getting ready
How to do it…
How it works…
Integrating Codahale/Dropwizard metrics with Dashing
Getting ready
How to do it…
How it works…
Index
Spring Boot Cookbook
Spring Boot Cookbook
Copyright © 2015 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: September 2015
Production reference: 1240915
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-78528-415-1
www.packtpub.com
Credits
Author
Alex Antonov
Reviewers
Theo Pack
Eric Pirard
Geoffroy Warin
Ricky Yim
Commissioning Editor
Dipali Goankar
Acquisition Editor
Sonali Vernekar
Content Development Editor
Shweta Pant
Technical Editor
Bharat Patil
Copy Editor
Tasneem Fatehi
Project Coordinator
Shipra Chawhan
Proofreader
Safis Editing
Indexer
Monica Ajmera Mehta
Production Coordinator
Arvindkumar Gupta
Cover Work
Arvindkumar Gupta
About the Author
Alex Antonov is a very passionate technologist with a hunger to learn new tools, languages, techniques, and concepts behind enterprise application design. His specialty lies in designing highly scalable distributed large-scale enterprise systems, which he has been successfully doing for the last 12 years. He is also a frequent presenter on the topics of architecture and design at conferences such as UberConf, JavaOne, and Spring 2GX.
Alex joined Orbitz Worldwide in 2004, and in his current role of Senior Principal Engineer, he is responsible for providing technical leadership and guidance in the development of foundational technologies, core libraries, and APIs for enterprise-wide use, as well as establishing and maintaining common design principles and standards used within the company and integration of new software development practices within the development community. He has extensive experience in enterprise architecture designing distributed systems, and spends a lot of time doing object domain modeling and focusing on domain-driven design and behavior-driven development and testing. Prior to that, Alex was a lead engineer in the same team that was responsible for web application frameworks and developing common practices and additional functionality on top of Spring MVC and Webflow.
He has been a long-time Spring user, starting with Spring 2.0.8 and all the way to the latest and greatest—Spring Boot. Ever since the introduction of Spring Boot, he has been writing applications using the framework as well as contributing patches to the codebase. His general interests lie in the area of distributed computing and technologies and frameworks that enable ease of application creation and cross communication. Besides Java, he is also proficient in Ruby/Rails, PHP, Groovy and is currently learning Erlang.
Alex is a graduate of Loyola University of Chicago, with a BS in computer science and an MS in computer science specializing in software architecture. He currently resides in Evanston, IL. When not coding, Alex enjoys playing tennis, hiking, skiing, and traveling.
Acknowledgment
I would like to thank all the people who have inspired, supported, and encouraged me through the book writing process. For me, this book represents the ability to take my passion to build software, my appreciation of the Spring family of frameworks and the amazing work that was done by their creators, combine it with many years of my first-hand experience building complex applications and share all the thoughts and best practices, which I've developed over time and always wanted to share, with the community, to help them build better, more elegant, robust, and performant applications.
I want to specially thank my wife, Alla, for constantly being there for me, for supporting me in writing this book, for being understanding when I spent countless evenings and weekends working on the chapters, for giving me an extra push to the finish line, when I was close to being done and for just being there for me! Honey, I love you very much!!!
A special thank you goes to my parents, for giving me the opportunity to pursue my carrier dreams, for the education, and raising me to become the person I am. All your hard work is now paying off, and I would not be able to achieve what I had, and write this book, if it weren't for you. I love you guys a lot, and while you are around, I can still be a child.
About the Reviewers
Theo Pack is a software engineer with several years of experience in developing frontend and backend applications. He completed his M.Sc. and has been working at Cologne Intelligence GmbH, a consulting company in Germany, since 2009.
Theo is passionate about technology and likes to master new programming languages.
You can read his blog at http://furikuri.github.io or follow him on Twitter at @furikuri.
Eric Pirard is a Java developer from the past few years. He is interested in the new technologies that help developers in their jobs to satisfy the customer's requirements as quick as possible. He also likes to help his friends or colleagues in solving their problems and progressing in their projects if he can.
As there are a lot of things to do in addition to his exciting job, if technology can help to solve customers problems as soon as possible, he is very interested. In this way, he has more time to spend with his family, enjoying sports, travelling, in short, enjoying life.
Geoffroy Warin has been programming since he was 10. He is a firm believer in the software craftsmanship movement and open source initiatives. A developer by choice and conviction, he has been working on the conception of enterprise-level web applications in Java and JavaScript throughout the course of his career.
He also teaches courses on Java web stacks and is a Groovy and Spring enthusiast.
You can read more about him on his blog at http://geowarin.github.io and on Twitter at @geowarin.
Ricky Yim is a passionate software engineer who has over 15 years of industry experience. He is a firm believer in using test-driven and behavior-driven development and agile practices to solve problems. He takes a flexible approach to software delivery and applies innovative solutions. He is currently the Delivery Manager for DiUS, an Australian technology services organization, http://www.dius.com.au.
You can find out more about him at http://codingricky.com, and you can follow him on GitHub at http://github.com/codingricky and on Twitter at @codingricky. He is also an avid runner and you can read about his adventures here at http://runningricky.com.
www.PacktPub.com
Support files, eBooks, discount offers, and more
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
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://www2.packtpub.com/books/subscription/packtlib
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can search, access, and read Packt's entire library of books.
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
Free Access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view 9 entirely free books. Simply use your login credentials for immediate access.
Preface
Spring Boot gives you the ability to create modern enterprise applications using a convention-over-configuration design principle and building on the power and flexibility of the underlying Spring Framework and its various components.
This book will help readers to create different types of Spring Boot applications, understand how to configure their behavior, and write and add custom components. They will obtain knowledge in how to be more efficient in testing, deploying, and monitoring their applications, which will help them through all the stages of the Software Development Life Cycle. By the end of the book, readers will have gained the skills and expertise to deploy and develop applications using Spring Boot.
What this book covers
Chapter 1, Getting Started with Spring Boot, provides you with an overview of the important and useful Spring Boot starters that are included in the framework. You will learn how to use the http://spring.io/ resources, how to get started with a simple project, configure the build file to contain your desired starters, and finish by creating a simple command-line application configured to execute some scheduled tasks.
Chapter 2, Configuring Web Application, provides you with examples of how to create and add the custom ServletFilters, Interceptors, Converters, Formatters and PropertyEditors to a Spring Boot web application. It will start by creating a new web application and proceed to use it as a base to customize with the above mentioned components.
Chapter 3, Web Framework Behavior Tuning, delves into fine-tuning the behavior of a web application. It will cover configuring the custom routing rules and patterns, adding additional static asset paths, and adding and modifying the servlet container connectors and other properties such as enabling SSL.
Chapter 4, Writing Custom Spring Boot Starters, shows you how to create custom Spring Boot Starters in order to provide additional behaviors and functionalities that might be required for complex enterprise applications. You will learn about the inner workings of the autoconfiguration mechanics and how to use them to selectively enable/disable default functionalities and conditionally load your own.
Chapter 5, Application Testing, explores the different techniques to test Spring Boot applications. It starts by introducing you to the testing of MVC applications, then proceeds with some tips on how to use the in-memory database with prepopulated data in order to mimic the real DB interactions during tests, and concludes with examples of behavior-driven development via testing tools such as Cucumber and Spock.
Chapter 6, Application Packaging and Deployment, shows you how every written application needs to be deployed. You will see examples of configuring their build to produce Docker images and self-executing binary files for the Linux/OSX environments. It will explore the options to configure the external applications using Consul and delve into the details of the Spring Boot environment and configuration functionalities.
Chapter 7, Health Monitoring and Data Visualization, explores the various mechanisms that Spring Boot provides to help us see the data about our application's health. It will start by showing you how to write and expose the custom health metrics and see the data using the http endpoints and JMX. It will then proceed with the overview and creation of the management commands for CRaSH and finish with the integration of the monitoring data with Graphite and Dashing using the Codahale/Dropwizard Metrics framework.
What you need for this book
For this book, you need JDK 1.8 installed in your favorite operating system: Linux, Windows, or OS X.
The rest of the software such as the Gradle build tool, all the necessary Java libraries such as Spring Boot and Spring Framework, and their dependencies as well as Docker, Consul, Graphite, Grafana, and Dashing will all be installed through the recipes in this book.
Who this book is for
This book is targeted at the