这个问题放在五年以前,还可以存在,但放到 2021 年,这个问题已经没有存在的价值了,因为所有的 Java 程序员都必须得掌握 Spring Boot 已经变成了一条定律,就像勾股定律一样。
首先,我们要知道“什么是 Spring Boot”。
Spring Boot 是由 Pivotal 团队提供的一个全新框架,其设计目的是用来简化 **Spring 应用的初始搭建以及开发过程。**该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 说句人话就是,Spring Boot 不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。
其次,我们要知道“使用 Spring Boot有什么好处”。
其实就是简单、快速、方便!在没有 Spring Boot 之前,我们要搭建一个 Web 项目,通常要这么做:
-
配置 web.xml,加载 Spring 和 SpringMVC
-
配置数据库链接、配置 Spring 事务
-
配置日志文件
-
部署 Tomcat 运行 Web 项目
有了 Spring Boot 之后呢,再也不用折腾这些了,仅仅只需要非常少的几个配置就可以快速地搭建一套 Web 项目!使用 Spring Boot 有多爽,用下面这幅图来表述下。
那接下来,我们就直接上手一个例子来体验一下。
01、使用 Spring Initlallzr 创建 Spring Boot 项目
创建一个 Spring Boot 项目非常简单,通过 Spring Initlallzr 就可以了。
-
第一个选项一般选择 Maven(Java 后端项目首选),Gradle 在安卓项目中用的比较多。
-
第二个选项一般选择 Java。
-
第三个选项默认为 2.4.3,Spring Boot 目前最稳定的版本。
-
第四个选项填上项目的路径和名称。
-
第五个选项,我们选择 Spring Web 和 Spring Boot Actuator,表明该项目是一个 Web 项目;Actuator 是 Spring Boot 提供的对应用系统的自省和监控的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的 Spring beans 以及一些环境属性等。
选项选择完后,就可以点击【Generate】按钮生成一个初始化的 Spring Boot 项目了。生成的是一个压缩包,导入到 IDE 的时候需要先解压。
02、把 Spring Boot 项目导入 IDEA
PS:导入的过程就省略了,请选择 Maven 就对了。
等待 Maven 把所有的依赖包下载完。
项目的目录结构图如下所示。
-
HelloSpringBootApplication 为项目的入口,带有 main() 方法。我们知道,传统的 Web 项目通常需要放到 Tomcat 等容器下面启动运行,而 main() 方法则预示着该项目可以作为一个 jar 包直接运行——因为 Spring Boot 已经内置了 Tomcat。
-
大家一定对 @SpringBootApplication 注解非常好奇,它的源码大致如下:
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
从这些注解中,我们大致可以窥探出,Spring Boot 项目使用了大量的注解取代了以往繁琐的 xml 配置。
03、编辑 Spring Boot 项目来看下面这段代码。
@SpringBootApplication
@RestController
public class HelloSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(HelloSpringBootApplication.class, args);
}
@RequestMapping("hello")
public String hello() {
return "Hello World";
}
}
-
@RestController 注解相当于 @ResponseBody + @Controller,意味着请求返回的对象可以直接以 JSON 的格式回显。
-
hello() 方法非常简单,返回一个字符串“Hello World”。@RequestMapping 表明这个方法是一个请求映射。
04、运行 Spring Boot 项目
接下来,我们直接运行 HelloSpringBootApplication 类,这样一个 Spring Boot 项目就启动成功了。
默认端口为 8080。
这时候,可以直接在 IDEA 的 Terminal 面板中测试该项目是否启动成功。
命令行为 curl http://localhost:8080/hello。
之所以不需要项目路径 helloSpringBoot,是因为默认启动的时候相当于是一个 ROOT 级别的,所以不需要根目录。
curl 是一个常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)和 URL 的合体。curl 的功能非常强大,命令行参数多达几十种。如果运用熟练的话,完全可以取代 Postman。
05、jar 形式运行 Spring Boot 项目
打开 pom.xml,我们可以看到如下内容:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
这意味着我们可以通过 maven 命令 mvn clean package 将 Spring Boot 项目打包成 jar 文件。
也可以加上参数用于跳过打包时候的测试:mvn clean package -Dmaven.test.skip
稍等片刻,就可以在 target 目录下看到对应的 jar 包。该 jar 包比起传统的 war 包更具有优势,因为不需要再单独开一个容器来跑项目了,Spring Boot 内置过了。原生的 jar 文件(.jar.original)只有不到 3 kb,非常小,因为没几行代码,但打包后 .jar 文件有 19 M,这说明 Spring Boot 帮我们做了很多肉眼看不到的工作。
直接使用 java -jar helloSpringBoot-0.0.1-SNAPSHOT.jar 命令运行该 jar 包,同样可以看到
启动信息。
这次,我们使用浏览器来访问一下。
也是 OK 的,这说明我们的第一个 Spring Boot 程序跑起来了。
怎么样?使用 Spring Boot 可以非常方便、快速搭建项目,使我们不用关心框架之间的兼容性,适用版本等各种问题,我们想使用任何东西,仅仅添加一个配置就可以,所以使用 Spring Boot 非常适合构建微服务。
如果你是一名 Java 程序员,还没有学习 Spring Boot,那赶紧点吧!