
1.3 用Maven开发第一个Spring Boot项目
这里将用IDEA集成开发环境通过Maven项目管理工具创建本书第一个Spring Boot范例项目,读者不仅可以从中了解Maven创建和管理项目的流程,还能直观地看到Spring Boot项目的基本构成和工作方式。
1.3.1 搭建基于Maven的Spring Boot项目
打开IDEA工具时会看到如图1.7所示的界面,在其中单击Create New Project菜单项进入如图1.13所示的界面。在其中的Project SDK部分确认使用JDK 11版本,并选中Maven项。

图1.13 以Maven创建Spring Boot
由于之前已经成功地安装配置了Maven工具,因此这里在IDEA集成开发工具中能以Maven的方式创建项目。随后单击界面下方的Next按钮进入如图1.14所示的界面,在其中可以输入项目名和其他Maven项目的信息。
在图1.14中的Name文本框中可以输入项目名,比如myFirstSpringBootPrj,在Location选择框中可以选择本项目所在的路径,这里是D:\work\Spring Boot Code\chapter1\myFirstSpringBootPrj,在其他的文本框中可以用自带的默认值。
随后可以单击Finish按钮完成项目的创建工作。创建完成后,就能看到如图1.15所示的效果图。

图1.14 输入Spring Boot项目名

图1.15 成功创建Maven项目
1.3.2 通过pom.xml文件引入依赖包
在开发Spring Boot项目时需要用到封装了Spring Boot相关方法的依赖包。由于本项目是由Maven管理的,而Maven项目是通过pom.xml下载并管理依赖包的,因此这里需要编写pom.xml,具体代码如下:

其中前3行是pom.xml中本来就有的,而第4~9行代码是以<parent>元素的形式指定本项目所要用到的通用依赖包。从中可以看到,在pom.xml文件中,可以通过第5行的groupId、第6行的artifactId和第7行的version这三大要素唯一指向一个依赖包。
第10~12行代码也是pom.xml自带的,其中指定了本项目的名字等信息,这和之前所做的配置是一致的。
第13~15行代码指定了本项目所用的JDK环境,这里是JDK1.1。在第16~21行代码通过dependencies和dependency元素指定了本项目要用的依赖包。
这段代码在POM.XML第4~9行定义的parent元素的基础上,通过dependency元素引入parent从属范围中的子依赖包。
编写好上述pom.xml文件后,右击pom.xml文件,并在随后弹出的菜单项中选中Maven→Reimport,如图1.16所示,由此可以根据pom.xml中的定义导入本项目所需的依赖包。

图1.16 导入本项目所用的依赖包
成功导入后,就能在本项目的External Libraries中看到导入的JAR包,具体效果如图1.17所示,从中能看到用Maven工具管理项目用到依赖包的方式。
需要说明的是,Maven工具会根据pom.xml中关于依赖包的设置从远端仓库下载依赖包到本地仓库。所以,在Maven本地仓库D:\work\apache-maven-3.6.3\repository中能看到从远端仓库下载的依赖包。

图1.17 导入依赖包后的效果图
1.3.3 开发第一个Spring Boot项目
创建好Spring Boot项目并以Maven方式下载好依赖包后,就可以通过如下步骤开发第一个Spring Boot项目:
在scr.main/java的默认路径新建一个名为demo的package,本项目所开发的两个Java程序就放在这个package中。
在demo的package中编写Spring Boot项目的启动类SpringBootApp.java,具体代码如下:

通过第2行和第3行的import语句导入本类需要用到的类库。在第5行的主类前需要用到第4行的@SpringBootApplication注解,表明本类是Spring Boot的启动类。
在第6行的main函数中,需要如第7行所示,通过SpringApplication.run方法实现启动效果,而该方法的SpringBootApp.class参数需要和本类名一致。
编写好启动类以后,需要在demo这个package中继续编写控制器类Controller.java,具体代码如下:

这里通过第4行的@RestController注解指定本类承担着“控制器”的效果。在第7行的sayHello方法前,通过第6行的@RequestMapping注解说明格式为/hello的HTTP请求将由本方法来处理,而通过第8行的代码说明该方法将返回“Hello”字符串。
1.3.4 运行并观察效果
完成开发后,可以通过如下步骤启动Spring Boot项目,并观察运行结果。
右击SpringBootApp.java文件,在随后弹出的菜单项中选中Run命令,如图1.18所示,以此启动Spring Boot项目。

图1.18 启动Spring Boot项目
成功启动后,可以在IDEA的控制台看到Started SpringBootApp字样,如图1.19所示。

图1.19 成功启动Spring Boot项目
在图1.19左边有一个正方形按钮,看到它,则说明Spring Boot项目处于运行状态,并工作在本地的8080端口,运行以后,可以通过单击这个按钮终止本项目。
在浏览器中输入http://localhost:8080/hello,通过localhost:8080能访问Spring Boot服务器,之后的/hello则会和Controller类中的sayHello方法前的@RequestMapping匹配上,从而调用sayHello方法,由此能在浏览器中输出Hello的字样,如图1.20所示。

图1.20 在浏览器中观察到的效果图
1.3.5 对Spring Boot项目的直观说明
从之前开发的第一个Spring Boot项目中,读者能观察到Spring Boot的如下特性:
(1)由于Spring Boot项目内嵌Tomcat服务器,因此通过启动类启动Spring Boot项目后,该项目就自动部署并运行在Tomcat服务器上,无须再进行额外的部署动作。
(2)Spring Boot项目启动后,会默认监听本地的8080端口。
(3)Spring Boot项目会通过控制器来监听本地8080端口上的请求,如果请求和控制器方法前的@RequestMapping注解匹配上,则由该方法来处理该请求。
(4)Spring Boot是以注解的方式来管理项目的,比如用@SpringBootApplication注解来指定启动类,用@RestController注解来指定控制器类。这与用XML文件进行配置的SSM等框架相比,大大提升了开发和管理项目的效率。
后文将围绕上述特性进一步讲述Spring Boot框架的其他特性。