从根本上来讲Spring Boot就是一些库的集合,是一个基于“约定优于配置”的原则,快速搭建应用的框架。本质上依然Spring,在这之上帮我们省去了很多样板化的配置,使得我们能够更专注于应用程序功能的开发。
SpringBoot将很多魔法带入了Spring应用程序的开发之中,其中最重要的是以下四个核心
为了体现SpringBoot的优势,我们先来看看如果使用Spring开发一个简单的Hello World Web应用程序,我们需要做的事情:
可以看到上面一系列的事中只有编写控制器是和HelloWorld功能相关的,虽然现代的IDE也能帮我们简化掉一些步骤,但是Spring相关的配置就算从别的工程拷贝也还是逃不了这一步。
接下来让我们来看下用Spring Boot是什么样的情况。
你上次在超市或大型零售商店自己推开门是什么时候?大多数大型商店都安装了带感应功能的自动门,虽然所有门都能让你进入建筑物内,但自动门不用你动手推拉。 与之类似,很多公共场所的卫生间里都装有自动感应水龙头和自动感应纸巾机。虽然没有超市自动门这么普及,但这些设施同样对你没有太多要求,可以很方便地出水和纸巾。 我敢打赌你也能想出无数例子,证明设备让现代生活更加自动化,而不是增加障碍。
下面通过一个例子来展示Spring Boot是如何开箱即用的。 依然是Hello World Web项目,我们来看下如何用InteliJ IDEA来创建。 点击IDEA的File-New-Project...,选择左边选项卡中的Spring Initializr,可以看到如下界面。
使用默认的https://start.spring.io,这将会连接网络,查询Spring Boot当前可用版本和组件列表。(当前时间用的是Spring Boot的2.0.0.RELEASE)
Next-输入项目信息-Next,来到选择起步依赖界面,如下:
对于一个简单的Hello World Web项目来说,这里只用勾选Web即可(我在这里另外勾选了Thymeleaf,在窗口的最右边可以看到)。 在这个界面可以看到Spring Boot为我们提供的大量的起步依赖。我们所勾选的web会为我们注入Web相关的所有依赖,省去我们自己配置依赖的时间。
再点击一次Next工程就新建完成了,等待下载相关的Maven依赖(第一次所花费的时间可能比较久)和IDEA创建索引。
创建完成后,项目结构如下图所示:
是一个常见的Maven项目结构,比较特别的是Spring Boot为我们自动生成了2个文件,application.properties和BlogDemoApplication.java。
application.properties是Spirng Boot默认的配置文件,当期是个空文件,现在不用理会后面会细讲。
BlogDemoApplication.java是Spring Boot自动生成的启动类。有了这个类,现在这个项目已经是一个可以启动的Web项目了,虽然还没有任何控制器,我们依然可以试着访问默认端口8080。 如果IDEA没有自动创建启动配置,可以自行到Run/Debug Configurations里添加。添加时选择Spring Boot,在右边选框的"Main class"中选择自动生成的启动类,如下:
点击运行后,访问8080端口将得到Spring Boot默认的错误页:
接着就可以开发我们的功能了——Hello World。
@Controller
@RequestMapping("/demo")
public class HelloWorldController {
@RequestMapping("/hello")
@ResponseBody
public String hello(){
return "hello";
}
}
很简单一个Controller,最后再次启动项目,已经能愉快的hello了!
回顾一下,去掉啰嗦的介绍,实际上的操作只有点点点、输入项目名、再编写一下Controller就完成了一个Hello World。仿佛回到了初学Java的年代,那时候还是Eclipse,也是点点点、输入项目名、然后编写一个main方法控制台输出一个hello。步骤相似,然而这次得到的已然是一个拥有众多Spring特性的一个Web工程。