扫一扫 第 3 章Spring Boot 入门 视频讲解 学习目的与要求 本章首先介绍什么是SpringBoot,然后介绍SpringBoot应用的开发环境,最后介绍如何 快速地构建一个SpringBoot应用。通过本章的学习,读者应该掌握如何构建SpringBoot应 用的开发环境以及SpringBoot应用。 本章主要内容 ●SpringBoot概述 ● 快速地构建SpringBoot应用 从前两章的学习可知,Spring框架非常优秀,问题在于“配置过多”,造成开发效率低、部署流 程复杂以及集成难度大等问题。为了解决上述问题,SpringBoot应运而生。在编写本书时, Sprnot的最新正式版本是3.2, 0. igBo0.读者在测试本书示例代码时建议使用3.2或更高版本。 3.1 SpringBot概述 .3.1.1 什么是Spring Boot SpringBoot是由Pivotal团队提供的全新框架,其设计目的是简化新Spring应用的初始 搭建以及开发过程。使用Spt框架可以做到专注于Spg应用的开发,无须过多关 注样板化的配置。 ringBoorin 在SpringBoot框架中,使用“约定优于配置(ConventionOverConfiguration,COC)”的理 念。针对企业应用开发,SpringBoot提供了符合各种场景的spring-boot-starter自动配置依 赖模块,这些模块都是基于“开箱即用”的原则,进而使企业应用开发更加快捷和高效。可以 说,SpringBoot是开发者和Spring框架的中间层,目的是帮助开发者管理应用的配置,提供 应用开发中常见配置的默认处理(即约定优于配置),简化Spring应用的开发和运维,降低开 发者对框架的关注度,使开发者把更多精力放在业务逻辑代码上。通过“约定优于配置”的原 则,SpringBoot致力于在蓬勃发展的快速应用开发领域成为领导者。 .3.1.2 Spring Boot 的优点 SpringBoot之所以能够应运而生,是因为它具有以下优点。 (1)使编码变得简单:推荐使用注解。 (2)使配置变得快捷:具有自动配置、快速构建项目、快速集成第三方技术的能力。 (3)使部署变得简便:内嵌Tomcat、Jety等Web容器。 (4)使监控变得容易:自带项目监控。 .3.1.3 Spring Boot 的主要特性 SpringBoot的主要特性如下。 . 约定优于配置 SpringBoot遵循“约定优于配置”的原则,只需要很少的配置,大多数情况直接使用默认 第3 章 Spring Boot 入门 67 配置即可。 . 独立运行的Spring应用 SpringBoot可以以JAR包的形式独立运行。使用java-jar命令或者在项目的主程序中 执行main()方法运行SpringBoot应用(项目)。 . 内嵌Web容器 SpringBoot可以选择内嵌Tomcat、Jetty等Web容器,无须以WAR包形式部署应用。 . 提供starter简化Maven配置 SpringBoot提供了一系列的starterpom 简化Maven的依赖加载,基本上可以做到自动 化配置、高度封装、开箱即用。 . 自动配置Spring SpringBoot根据项目依赖(在类路径中的JAR包、类)自动配置Spring框架,极大地减少 了项目的配置。 . 提供准生产的应用监控 SpringBoot提供了基于HTTP、SSH、Telnet对运行的项目进行跟踪监控。 . 无代码生成和XML配置 SpringBoot不是借助于代码生成实现的,而是通过条件注解实现的,建议使用Java配置 和注解配置相结合的配置方式,这样方便、快捷。 3.2 第一个SpringBoot应用 .3.2.1 Maven 简介 ApacheMaven是一个软件项目管理工具。基于项目对象模型(ProjectObjectModel, POM)的理念,通过一段核心描述信息管理项目构建、报告和文档信息。在Java项目中, Maven主要完成两项工作:①统一开发规范与工具;②统一管理JAR包。 Maven统一管理项目开发所需要的JAR 包,这些JAR 包不再包含在项目内(即不在lib 目录下),而是存放于仓库中。仓库主要包括以下内容。 . 中央仓库 中央仓库存放开发过程中的所有JAR包,例如JUnit,可以通过互联网下载,下载地址为 http://mvnrepository.com。 . 本地仓库 本地仓库指本地计算机中的仓库。下载Maven 的本地仓库配置在“% MAVEN_ HOME%\conf\settings.xml”文件中,找到localRepository即可。 Maven项目首先从本地仓库中获取所需要的JAR包,当无法获取指定的JAR包时,本地 仓库将从远程仓库(中央仓库)中下载JAR包,并存入本地仓库以备将来使用。 .3.2.2 Maven 的pom.xml Maven是基于项目对象模型的理念管理项目的,所以Maven的项目都有一个pom.xml 配置文件管理项目的依赖以及项目的编译等功能。 在MavenWeb项目中重点关注以下元素。 . properties元素 在<properties></properties>之间可以定义变量,以便在<dependency> </dependency> 68 中引用,示例代码如下: <properties> <!-- Spring 版本号--> <spring.version>6.0.0</spring.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> </dependencies> . dependencies元素 <dependencies> </dependencies> 元素包含多个项目依赖需要使用的<dependency> </dependency>元素。 . dependency元素 在<dependency> </dependency> 元素内部通过<groupId> </groupId>、<artifactId> </artifactId>、<version></version>3个子元素确定唯一的依赖,也可以称为3个坐标。示例 代码如下: <dependency> <!--groupId 组织的唯一标识--> <groupId>org.springframework</groupId> <!--artifactId 项目的唯一标识--> <artifactId>spring-core</artifactId> <!--version 项目的版本号--> <version>${spring.version}</version> </dependency> . scope子元素 在<dependency></dependency>元素中有时使用<scope></scope>子元素管理依赖的部 署。<scope></scope>子元素可以使用以下5个值: 1)compile(编译范围) compile是默认值,即默认范围。如果依赖没有提供范围,那么该依赖的范围就是编译范 围。编译范围的依赖在所有的classpath中可用,同时也会被打包发布。 2)provided(已提供范围) provided表示已提供范围,只有当JDK或者容器已提供该依赖时才可以使用。已提供范 围的依赖不是传递性的,也不会被打包发布。 3)runtime(运行时范围) runtime在运行和测试系统时需要,但在编译时不需要。 4)test(测试范围) test在一般的编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用。该依 赖不会随项目发布。 5)system(系统范围) system 范围与provided范围类似,但需要显式提供包含依赖的JAR 包,Maven不会在 Repository中查找它。 .3.2.3 使用IntelliJ IDEA 快速构建Spring Boot 应用 IntelliJIDEA 简称IDEA,是Java编程语言的集成开发环境。IDEA 被业界公认为较好 第3 章 Spring Boot 入门 69 的Java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE 支持、各类版本工具 (Git、SVN 等)、JUnit、CVS整合、代码分析、创新的GUI设计等方面的功能可以说是超常的。 用户可以登录官网,根据操作系统下载相应的IntelliJIDEA。本书使用的是Windows Ultimate版ideaIU-2022.2.1(内置Java运行环境OpenJDK)。 下面详细讲解如何使用IDEA 集成开发工具快速构建一个SpringBootWeb应用,其具 体实现步骤如下。 . 新建SpringProject 打开IDEA,选择File→New→Project命令,打开NewProject对话框。在该对话框的左 侧选择SpringInitializr选项,打开如图3.1所示的界面输入项目信息。 图3.1 输入项目信息 . 选择项目依赖 在图3.1中输入项目信息后,单击Next按钮,打开如图3.2所示的选择项目依赖界面。 在图3.2中选择项目依赖(如SpringWeb)后,单击Create按钮,即可完成SpringBootWeb应 用的创建。 . 编写测试代码 在ch3应用的src/main/java目录下创建com.ch.ch3.test包,并在该包中创建TestController 类,代码如下: package com.ch.ch3.test; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @GetMapping("/hello") public String hello() { return "您好,Spring Boot!"; } } 图3.选择项目依赖 2 在上述代码中使用的@RestControler注解是一个组合注解,相当于SpringMVC中的 @Controler和@ResponseBody注解的组合,具体应用如下: (1)如果只是使用@RestControler注解Controler,则Controler中的方法无法返回 JSP 、HTML等视图,返回的内容就是return的内容。 (2)如果需要返回到指定页面,则需要使用@Controler注解。如果需要返回JSON 、 XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。 . 生成应用程序的App类 在ch3应用的ccch3包中自动生成了应用程序的App类Ch3Applcato om.h.iin。这里省 略Ch3Application的代码。 . 运行main方法启动SpringBot应用 运行Ch3Application类的mai控制台信息如图3. n方法,3所示。 图3.启动SpgBot应用后的控制台信息 3 rin 从控制台信息可以看到Tomcat的启动过程、SpringMVC的加载过程。 注意:Sp0内嵌了Tomc因此对于Spt应用不需要开发者配 ringBoot3.at10, ringBoo 置与启动Tomcat。 70 第3章 SpringBoot入门 . 测试SpringBoot应用 在启动SpringBoot应用后,默认访问地址为“htp://localhost:8080/,将项目路径直接(”) 设为根路径,这是SpringBoot的默认设置。因此,可以通过 “htp://localhost:8080/helo”测试应用(helo与测试类 图3.4所示。 r中的@G)对应),测试效果如 4 ringB TestControleetMapping("/helo"图3.访问Spot应用 .3.2.4 使用Spring Tool Suite 快速构建Spring Boot 应用 SpringTolSuite(STS)是一个定制版的Eclipse,专为Spring开发定制,方便创建、调试、运 行、维护Spring应用。通过该工具,可以很轻易地生成一个Spring工程,例如Web工程,最令人 兴奋的是工程中的配置文件都将自动生成,开发者再也不用关注配置文件的格式及各种配置了。 用户可以登录Sprig官网“hs://pig.o/tl”下载SprnosfrElpe,本书使用 ntpsrnioosigTolocis 的版本是sprn-olsie44.1.-4.0wnwnx64.efetatn igto-ut--17.RELEASEe26.-i32.i32.86_sl-xrcig. jar(内置Java运行环境OpenJDK )。该版本与Eclipse一样,无须安装,解压即可使用。 下面详细讲解如何使用STS快速构建一个SpringBoot应用,其具体实现步骤如下。 . 新建SpigStterPoject 选择File→N(r) ew(n) →Spr(r) (a) ingSt(r) arterProject命令,5所示的NewSpringStarter 打开如图3. Project对话框。 图3.jt对话框 5 NewSpringStarterProec . 选择项目依赖 在图3.5中输入项目信息后,单击Nex打开如图3.ringStarter t按钮,6所示的NewSpProjectDependencies对话框,在其中选择项目依赖,如Web。 单击图3.nish按钮, ringBootWeb应用的创建。 6中的Fi即可完成Sp . 编写测试代码 在ch3应用的src/mi/jva目录下创建cc.h3tst包,并在该包中创建TsCnrlr 类,代码与3.3节中相同 an, aom.hc.eetotoe 2.这里不再赘述。 . 生成应用程序的App类 在ch3应用的ccch3包中自动生成了应用程序的App类Ch3Applcato om.h.iin。这里省 略Ch3Application的代码。 71 图3.选择项目依赖 6 . 运行main方法启动SpringBot应用 运行Ch3Application类的mai控制台信息如图3. n方法,7所示。 图3.启动Spot应用后的控制台信息 7 ringB . 测试SpringBoot应用 在启动SpringBoot应用后,可以通过“htp://localhost:8080/helo”测试应用。 3.本章小结 3 本章首先简单介绍了Spt应运而生的缘由,然后演示了如何使用IDEA和STS 快速构建SpringBoot应用。 ringBooIDEA在业界被公认为较好的Java开发工具,本书后续章节都使用IDEA编写示例代码。 扫一扫 如果开发者要构建SpringBoot应用,可以根据实际工程需要选择合适的IDE 。 习题3 自测题1.Spring、SpringMVC 、SpringBoot三者有什么联系? 为什么要学习SpringBoot? 2.在IDEA中如何快速构建SpringBoot的Web应用? 72