Spring Boot relates to all of those other technologies in the sense that it helps you use them in your project with less manual configuration on your part.
Put simply, Spring Boot offers 4 major features:
* Auto-configuration
* Build-time starter dependencies (think
Maven POM files with transitive deps, but no code of their own)
* An optional CLI for writing complete apps as nothing more than Groovy scripts
* The Actuator; a runtime insight into the inner workings and metrics of an app
IMO, the centerpiece of all of this is auto-configuration. Rather than write a lot of XML or Java-based configuration to satisfy Spring, Spring Boot auto-configuration makes intelligent decisions (at runtime...no code generation) to automatically configure components it thinks you need. For example, if you're building a web app, you'll likely add Spring MVC to your build and therefore it will be available in the classpath at runtime. Spring Boot will detect Spring MVC on the classpath at runtime and automatically configure everything you need for writing web apps with Spring MVC (including DispatcherServlet). All you need to do is start writing controllers. (And Spring MVC is just one example of auto-configuration.)
I prefer not to use the
word "bootstrapping" because to me it implies code generation. Instead, I think of Spring Boot auto-configuration as an assistant in developing Spring apps. It handles the configuration so that I can focus on the app itself.
When should you use Spring Boot? Well, I think (and I believe most of the Spring team agrees) that it should be the foundation of any Spring project, especially new greenfield projects. Why would you want to do things the hard way with manually written/maintained configuration when Spring Boot can handle it for you?