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
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
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
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 ...