1.前言
Spring Boot的大名儿从2016年开始突然就变的燥热起来,纵然有很多技术分享会的参加,但是对Spring Boot还是一知半解,偶然的机会接触到Spring Boot再加上对Spring学习的深入,开始对Spring Boot有了学习的兴趣。揭一揭Spring Boot神秘的面纱。
看了好多博客文章,对Spring boot描述的是天花乱坠而且不一而同,我想用简单点的话语来介绍Spring boot ,最好一句话就能听懂。听不懂就呵呵了。
2.Spring boot
Spring Boot从某种意义上来说就是Spring。没错,Spring Boot的工作其实是替你进行一些Spring的配置工作。Spring是一个替代EJB这个重量级框架的轻量级框架,但是从Spring的一些bean的配置工作来看,它却是一个重量级的配置,其中有很多都是模板配置或者重复配置,甚至存在一些引用库冲突或依赖项寻址的问题。那么能不能把这些所有进行Spring开发所具有复用性的配置和问题拿出来呢?
是的,Spring Boot所做的一切都只是在帮助Spring瘦身,它并没有扩展Spring的任何功能,它和Spring 是互为替代的关系。对于Spring开发过程中的共性问题:依赖项的引入、maven仓库的版本和兼容问题、配置文件的重复性,Spring boot 提供了一套成体系的仓库,可以说你的所有共性配置和Spring开发应用具备的特性都不需要你创建了,Spring Boot会自动为你引入以及设置。
对比一下,用Spring开发一个简单的Hello World Web应用程序。
传统Spring开发方式:
1. 一个项目结构,其中有一个包含必要依赖的Maven或者Gradle构建文件,起码要有SpringMVC和Servlet API这些依赖。
2.一个web.xml文件(或者一个WebApplicationInitializer实现),其中声明了Spring的前端控制器DispatcherServlet。
3.一个启用了Spring MVC的Spring配置。
4.一个控制器类,以“Hello World”响应HTTP请求。
5.一个用于部署应用程序的Web应用服务器,比如Tomcat。
基于Spring boot的开发:
1.编写基于Groovy的Spring应用程序代码:
@RestController
class HelloController{
@RequestMapping("/")
defhello() {
return "HelloWorld"
}
}
在装好的Spring boot命令行界面运用HelloController:
$ spring run HelloController.groovy
如此,完成。立竿见影!没有配置文件,没有服务器,简单!唯一区别的是使用了Groovy语言来代替了java语言,但是Spring boot 并不强制要求是用Groovy,同样可以使用java语言。
3.Spring 大致分为四个方面
自动配置:针对很多Spring应用程序常见的应用功能,Spring boot能自动提供相关配置。
Springboot 为一些常用的模板配置进行了自动化的配置和嵌入,不再需要手动编写;
起步依赖:告诉Spring boot 需要什么功能,它就能引入需要的库;
减少依赖数量:
工程(web core ear)需要的一些依赖的jar可以通过再对应的工程(Web)中配置类似 org.springframework.boot:spring-boot-starter-web的一个依赖,它会根据依赖传递将web需要 的其他依赖引入项目中。此外,对于工程可能还需要jpa依赖、安全依赖等需,都可以引入,不用人为 考虑。
命令行界面:这是Spirng boot 的可选特性,借此你知需要写代码就能完成完整的应用程序,无需传统项目构 建。 命令行界面就是Spring boot CLI,CLI可以知道你的类来自那个依赖包以及放到那个 Classpath中。不再需要import这些引入的包的配置;
Actuator:让你能够深入运行中Spring boot 应用程序,一探究竟。
提供在运行时检测应用程序内部情况的能力,可以使用Shell进行查看。包括:
Spring应用程序上下文里配置的Bean
Spring Boot的自动配置做的决策
应用程序取到的环境变量、系统属性、配置属性和命令行参数
应用程序里线程的当前状态
应用程序近处理过的HTTP请求的追踪情况
各种和内存用量、垃圾回收、Web请求以及数据源用量相关的指标。