Spring诞生时是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需
开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通
过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。
  虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,
而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身
组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,
可以代替XML。
  尽管如此,我们依旧没能逃脱配置的魔爪。开启某些Spring特性时,比如事务管理和Spring
MVC,还是需要用XML或Java进行显式配置。启用第三方库时也需要显式配置,比如基于
Thymeleaf的Web视图。配置Servlet和过滤器(比如Spring的 DispatcherServlet )同样需要在
web.xml或Servlet初始化代码里进行显式配置。组件扫描减少了配置量,Java配置让它看上去简洁
不少,但Spring还是需要不少配置。
所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要
进行思维切换,所以写配置挤占了写应用程序逻辑的时间。和所有框架一样,Spring实用,但与
此同时它要求的回报也不少。
  除此之外,项目的依赖管理也是件吃力不讨好的事情。决定项目里要用哪些库就已经够让人
头痛的了,你还要知道这些库的哪个版本和其他库不会有冲突,这难题实在太棘手。并且,依赖管理

也是一种损耗,添加依赖不是写应用程序代码。一旦选错了依赖的版本,随之而来的不兼容问题毫无疑问会是生产力杀手。
Spring Boot让这一切成为了过去。

 Spring Boot将很多魔法带入了Spring应用程序的开发之中,其中最重要的是以下四个核心。
  自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。
  起步依赖:告诉Spring Boot需要什么功能,它就能引入需要的库。
  命令行界面:这是Spring Boot的可选特性,借此你只需写代码就能完成完整的应用程序,
无需传统项目构建。
  Actuator:让你能够深入运行中的Spring Boot应用程序,一探究竟