Spring Boot是目前流行的微服务框架,倡导“约定优先于配置”,其设计目的是用来简化新Spring应用的初始化搭建以及开发过程。SpringBoot提供了很多核心的功能,比如自动化配置、提供starter简化Maven配置、内嵌Servlet容器、应用监控等功能,让我们可以快速构建企业级应用程序。
本章主要介绍开始学习Spring Boot之前的环境准备,如何一分钟快速搭建Spring Boot,Spring Boot文件目录简单介绍,以及Maven Helper插件的安装和使用等内容。
在开始学习Spring Boot之前,我们需要准备好开发环境。本节将以Windows操作系统为例,介绍如何安装JDK、Intellij IDEA及ApacheMaven。如果你的电脑上已经安装了JDK、Intellij IDEA或者ApacheMaven,可以跳过本节内容。
JDK(Java SE Development Kit)建议使用1.8及以上的版本,其官方下载路径为:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html。大家可以根据自己Windows操作系统的配置选择合适的JDK1.8安装包,这里就不过多描述。
软件下载完成之后,双击下载软件,出现安装界面。一路单击【下一步】按钮即可完成安装。这里笔者把JDK安装在C:\ProgramFiles\Java\jdk1.8.0_77下。
安装完成后,需要配置环境变量JAVA_HOME,具体步骤如下:
在电脑桌面上,右击【我的电脑】→【属性】→【高级系统设置】→【环境变量】→【系统变量(S)】→【新建】出现新建环境变量的窗口。
在【变量名】和【变量值】中分别输入JAVA_HOME和C:\Program Files\Java\jdk1.8.0_77,单击【确定】按钮。
JAVA_HOME配置好之后,将%JAVA_HOME%\bin加入到【系统变量】的path中。完成后,打开命令行窗口,输入命令java-version,如出现图所示的提示,即表示安装成功。
tips:JDK安装路径最好不要出现中文,否则会出现意想不到的结果。
在Intellij IDEA的官方网站http://www.jetbrains.com/idea/上可以免费下载IDEA。下载完IDEA后,运行安装程序,按提示安装即可。本书使用Intellij IDEA 2016.2版本,当然大家也可以使用其他版本的IDEA,只要版本不要过低即可。安装成功之后,打开软件界面。
Apache Maven是目前流行的项目管理和构建自动化工具。虽然IDEA已经包含了Maven插件,但是笔者还是希望大家在工作中能够安装自己的Maven插件,方便以后项目配置需要。大家可以通过Maven的官方网站http://maven.apache.org/download.cgi下载最新版的Maven,本书的Maven版本为apache-maven-3.5.0。
下载完成后解压缩即可,例如,解压到D:盘上,然后将Maven的安装路径D:\apache-maven-3.5.0\bin加入到Windows的环境变量path中。安装完成后,在命令行窗口执行命令:mvn-v,如果输出如图所示的页面,表示Maven安装成功。
接下来,我们要在Intellij IDEA下配置Maven,具体步骤如下:
这里需要注意的是,之所以把Maven默认仓库(C:${user.home}.m2\respository)的路径改为我们自己的目录(D:\apache-maven-3.5.0\repository),是因为respository仓库到时候会存放很多的jar包,放在C盘影响电脑的性能,所以才会修改默认仓库的位置。
使用Intellij IDEA创建Spring Boot项目有多种,比如Maven和SpringInitializr方式。这里只介绍Spring Initializr这种方式,因为这种方式不但可为我们生成完整的目录结构,还可为我们生成一个默认的主程序,节省时间。
单击【NewWindow】表示在新的窗口打开项目,单击【This Window】表示在当前窗口打开项目,我们选择【New Window】按钮即可。
在IDEA开发工具上,找到刷新依赖的按钮(Reimport AllMaven Projects),下载相关的依赖包,这时开发工具开始下载SpringBoot项目所需的依赖包,如图所示。
至此,Spring Boot项目创建完成。
tips:下载Spring Boot依赖包是一个相对漫长的过程,可以去喝杯茶休息一会儿。
Spring Boot项目创建完成之后,找到入口类DemoApplication中的main方法并运行。当看到如图所示,表示项目启动成功。同时还可以看出项目启动的端口(8080)及启动时间。
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args){
SpringApplication.run(DemoApplication.class, args);
}
}
### 在命令行窗口执行mvm spring-boot:run命令
mvm spring-boot:run
### java -jar xxx.jar命令
java -jar demo-0.0.1-SNAPSHOT.jar
创建Spring Boot项目后,会产生一个工程目录,该工程目录存放了工程项目的各种文件,对于Spring Boot开发人员来说,了解该工程目录非常必要。
Spring Boot将很多配置文件进行了统一管理,且配置了默认值。SpringBoot会自动在/src/main/resources目录下找application.properties或者application.yml配置文件,找到后将运用此配置文件中的配置,否则使用默认配置。这两种类型的配置文件有其一即可,也可以两者并存。两者的区别如下:
application.properties和application.yml配置文件的区别主要是书写格式不同,另外,application.yml格式不支持@PropertySource注解导入配置。
Tips:.properties配置文件的优先级高于.yml。在.properties文件中配置了server.port=8080,同时,在.yml配置了server.port=8090,SpringBoot将使用.properties中的8080端口。
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//入口类
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args){
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication = @EnableAutoConfiguration + @ComponentScan + @SpringBootConfiguration
Tips: 入口类需要放置在包的最外层,以便能够扫描到所有子包中的类。
Spring Boot的测试类主要放置在/src/test/java目录下面。项目创建完成后,Spring Boot会自动为我们生成测试类DemoApplicationTests.java,测试类的代码如下:
package com.example.demo;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests{
@Test
public void contextLoads ()
}
}
当我们右键执行DemoApplicationTests.java中的contextLoads方法的时候,大家可以看到控制台打印的信息和执行入口类中的SpringApplication.run()方法,打印的信息是一致的。由此便知,@SpringBootTest是引入了入口类的配置。
Spring Boot项目下的pom.xml文件主要用来存放依赖信息,具体代码如下(部分代码已省略):
在2.x中废除了一些1.x中的配置,并增加了许多新配置,详细请查看以下链接中的变更表格。
Spring Boot 2.x对第三方类库升级了所有能升级的稳定版本,一些值得关注的类库升级如下:
Spring Boot 2.x至少需要JDK8的支持,2.x应用了JDK8的许多高级新特性,所以当应用要升级到2.0版本时,先确认应用必须兼容JDK8。另外,2.x开始了对JDK9的支持。
提供对HTTP/2的支持,如Tomcat、Undertow、Jetty,该功能依赖具体选择的应用服务器和应用环境。
2.x通过启动器和自动配置全面支持Spring的响应式编程,响应式编程是完全异步和非阻塞的,它是基于事件驱动模型,而不是传统的线程模型。就连Spring Boot内部也对一些功能点进行了有必要的响应式升级,最值得注意的是对内嵌式容器的支持。
对响应式编程支持又包括以下几个技术模块:
除了前面几节列出的变化外,还包括其他新特性:
Maven Helper是一款可以方便查看Maven依赖树的插件,可以在IntellijIDEA上安装使用它。它支持多种视图来查看Maven依赖,同时可以帮助我们分析pom文件中的依赖是否存在冲突,方便快速定位错误。
安装Maven Helper插件很简单,在菜单栏选择【File】→【Settings】→【Plugins】,在搜索框中输入【Maven Helper】,然后单击【Install】安装即可。安装成功之后重启Intellij IDEA即可使用。
插件安装成功之后打开pom文件,我们看到除了Text视图外,多了一个Dependency Analyzer视图。