搭建第一个Spring Boot项目

沉默王二2021年12月23日
大约 6 分钟

关于 Spring Initializr

Spring 官方提供了 Spring Initializr 的方式来创建 Spring Boot 项目。网址如下:

https://start.spring.io/open in new window

打开后的界面如下:

可以将 Spring Initializr 看作是 Spring Boot 项目的初始化向导,它可以帮助开发人员在一分钟之内创建一个 Spring Boot 骨架,非常的傻瓜式。

来解释一下 Spring Initializr 初始化界面中的关键选项。

1)Project:项目的构建方式,可以选择 Mavenopen in new window(安装方式可以戳链接) 和 Gradle(构建脚本基于 Groovy 或者 Kotlin 等语言来编写,而不是传统的 XML)。编程喵默认采用的 Maven。

2)Language:项目的开发语言,可以选择 Java、Kotlin(JetBrains开发的可以在 JVM 上运行的编程语言)、Groovy(可以作为 Java 平台的脚本语言来使用)。默认 Java 即可。

3)Spring Boot:项目使用的 Spring Boot 版本。默认版本即可,比较稳定。

4)Project Metada:项目的基础设置,包括包名、打包方式、JDK 版本等。

  • Group:项目所属组织的标识符,比如说 top.codingmore;
  • Artifact:项目的标识符,比如说 coding-more;
  • Name:默认保持和 Artifact 一致即可;
  • Description: 项目的描述信息,比如说《编程喵实战项目(Spring Boot+Vue 前后端分离项目)》;
  • Package name:项目包名,根据Group和Artifact自动生成即可。
  • Packaging: 项目打包方式,可以选择 Jar 和 War(SSM 时代,JavaWeb 项目通常会打成 War 包,放在 Tomcat 下),Spring Boot 时代默认 Jar 包即可,因为 Spring Boot 可以内置 Tomcat、Jetty、Undertow 等服务容器了。
  • Java:项目选用的 JDK 版本,选择 11 或者 8 就行(编程喵采用的是最最最最稳定的 Java8)。

5)Dependencies:项目所需要的依赖和 starter。如果不选择的话,默认只有核心模块 spring-boot-starter 和测试模块 spring-boot-starter-test。

好,接下来我们使用 Spring Initializr 初始化一个 Web 项目,Project 选择 Maven,Spring Boot 选择 2.6.1,Java 选择 JDK 8,Dependencies 选择「Build web, including RESTful, applications using Spring MVC. Uses Apache Tomcat as the default embedded container.」

这预示着我们会采用 SpringMVC 并且使用 Tomcat 作为默认服务器来开发一个 Web 项目。

然后点击底部的「generate」按钮,就会生成一个 Spring Boot 初始化项目的压缩包。

如果使用的是 Intellij IDEA 旗舰版,可以直接通过 Intellij IDEA 新建 Spring Boot 项目。

Spring Boot 项目结构分析

解开压缩包,并导入到 Intellij IDEA 中,可以看到 Spring Boot 项目的目录结构。

可以使用 tree -CfL 3 命令以树状图列出目录的内容:

  • src/main/java 为项目的开发目录,业务代码在这里写。
  • src/main/resources 为配置文件目录,静态文件、模板文件和配置文件都放在这里。
    • 子目录 static 用于存放静态资源文件,比如说 JS、CSS 图片等。
    • 子目录 templates 用于存放模板文件,比如说 thymeleaf 和 freemarker 文件。
  • src/test/java 为测试类文件目录。
  • pom.xml 用来管理项目的依赖和构建。

如何启动/部署 Spring Boot 项目

第一次启动,我个人习惯在 main 类中右键,在弹出的右键菜单这种选择「run ... main()」启动。

经过 2.5s 左右的 build 后,项目启动成功了,可以在日志中看到 Web 项目是以 Tomcat 为容器的,默认端口号为 8080,根路径为空。

这要比传统的 Web 项目省事省心省力,不需要打成 war 包,不需要把 war 包放到 Tomcat 的 webapp 目录下再启动。

那如果想把项目打成 jar 包放到服务器上,以 java -jar xxx.jar 形式运行的话,该怎么做呢?

打开 Terminal 终端, 执行命令 mvn clean package,等待打包结果。

我们的项目在初始化的时候选择的是 Maven 构建方式,所以 pom.xml 文件中会引入 spring-boot-maven-plugin 插件。

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

因此我们就可以利用 Maven 命令来完成项目打包,打包完成后,进入 target 目录下,就可以看到打包好的 jar 包了。

利用终端工具 Tabbyopen in new window,将 jar 包上传到服务器。

执行 java -jar tobebetterjavaer-0.0.1-SNAPSHOT.jar 命令。

what??????竟然没有安装 JDK。好吧,为了带白票阿里云服务器的小伙伴一起学习 Linux,我下了血本自己买了一台零添加的服务器。

PS:需要在 centos 环境下安装 JDK 的小伙伴可以看这篇。

https://segmentfault.com/a/1190000015389941open in new window

安装好 JDK 后,再次执行命令就可以看到 Spring Boot 项目可以正常在服务器上跑起来了。

第一个Web项目

项目既然启动成功了,我们在浏览器里访问 8080 端口测试下吧。

咦,竟然 Whitelabel 了,这个 404 页面是 Spring Boot 默认的错误页面,表示我们的请求在 Web 服务中不存在。

那该怎么办呢?

我们来增加一个 Controller 文件,用来处理 Web 请求,内容如下。

@Controller
public class HelloController {
    
    @GetMapping("/hello")
    @ResponseBody
    public String hello() {
        return "hello, springboot";
    }
}

这段代码的业务逻辑非常简单,用户发送 hello 请求,服务器端响应一个“hello, springboot”回去。

OK,现在可以访问到了。也就表明我们的第一个 Spring Boot 项目开发完成了。

热部署

作为开发者,我们希望每次修改代码后,代码能够自动编译,服务能够自动重新加载,这样就省去了重新运行代码的烦恼。

那 spring-boot-devtools 就是这样的一个神器,当我们把它添加到项目当中后,无论是代码修改,还是配置文件修改,服务都能够秒级重载(俗称热部署),这在我们开发的时候,非常有用。

怎么才能开启热部署呢?

第一步,在 pom.xml 文件中添加依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency>

第二步,没有第二步了,哈哈。

直接修改代码来体验一下吧。我们修改 HelloController 内容为:


更多内容,只针对《Java 程序员进阶之路》星球用户开放,需要的小伙伴可以戳链接🔗open in new window加入我们的星球,一起学习,一起卷。。编程喵🐱是一个 Spring Boot+Vue 的前后端分离项目,融合了市面上绝大多数流行的技术要点。通过学习实战项目,你可以将所学的知识通过实践进行检验、你可以拓宽自己的技术边界,你可以掌握一个真正的实战项目是如何从 0 到 1 的。


源码路径


Loading...