快速搭建 Spring Boot 项目

337 阅读4分钟

本文已参与「新人创作礼」活动, 一起开启掘金创作之路。

一、Spring Boot 简介

Spring Boot 是在 Spring 框架基础上创建的全新框架。Spring Boot 使用更加简单,而且功能更加丰富。

二、快速上手

1. 通过 IntelliJ IDEA上快速创建项目

1.1 通过 Spring Initializr 快速创建一个基于 MavenSpring Boot 项目

image.png

图中 Group、Artifact 是为了保证项目唯一性而提出的,会依赖于这两个 ID 来从 Maven 仓库中查找项目。 groupId 一般分为多段,常见的划分逻辑可以是:第一段为域,第二段为公司名称,其中域又分为 org、com、cn 等,org 为非营利组织,com 为商业组织,cn 为中国,这块的维度可以按照自定义来设计。

比如本文中的项目名为 common-mail-service,可以将 groupId 设置为 cn.sdp.candy.commoncn 表示域为中国,sdp 是组织缩写,artifactId 设置为 common-mail-service,表示项目名称是 common-mail-servicePackage Name 为项目的包路径,即项目实际的物理路径。

常见问题:未找到 Spring Initializr 选项?打开 File->Settings->Plugins->installed 然后搜索 spring boot ,会发现有一个内置的 Spring Boot 插件没有启用,处于 Disable 状态,直接打钩启用,然后 OK 重启即可。

1.2 勾选依赖,Web 下的 Spring Web 选项,点击 Finish 即可

image.png

1.3 项目创建成功

image.png

简单看下 Spring Boot 的项目组成结构:

  • application.java:Spring Boot的启动入口,以及一些全局的配置。注解@SpringBootApplication表明了这是 Spring Boot 的应用入口,Spring 官方建议该入口有且只有一个。
  • pom.xml 文件:Maven 的构建配置文件。其中spring-boot-starter-parent是 Spring Boot 构建的基础,负责依赖管理与默认配置,spring-boot-starter-web是 SpringMVC 的依赖,spring-boot-starter-test是测试依赖,spring-boot-maven-plugin是 Spring Boot 的打包插件。通过简单的依赖配置,Spring Boot 将自动帮我们导入其他所需要的依赖包。
  • resources 目录放置的是 Spring Boot 项目的资源文件
    • static:Spring Boot 约定 的静态文件目录,只要放在这个目录中,Spring Boot就会当成静态文件处理。
    • templates:Spring Boot 约定 的模板目录
    • application.properties:Spring Boot的配置文件,可以是 .properties 或者.yml 文件 image.png

2. 编写实际的业务逻辑

模块实现思路:我们创建一个简单的 RESTful API,作为对外提供的服务,先创建一个 Controller 层来接收和响应请求,为了验收简单,我们省去 Service 层,直接在 Controller 层处理请求,一般生产开发中请避免该种偷懒写法 罒ω罒。

2.1 创建邮件服务 Controller 文件

补充说明:对于 Controller 层不理解的小伙伴,可以先学习下 SpringMVC 中的设计概念,在 MVC 概念中 Web 工程结构分为三层,自下而上是 *Dao层**Service层**Controller层*。简单地说 Controller 层为控制层,主要处理外部请求,调用下层的实际业务层(Service层),返回请求结果。

如下图所示,在我们主工程的路径下创建 Controller 文件夹,本文中路径为 java->cn.sdp.candy.mail.service->openapi.v20210108.controller->MailController.java

image.png image.png

编辑刚刚创建的 MailController.java 文件,加入 @RestController, @RequestMapping 等标注。

代码中 @ 开头的称为 Java 标注。Java 语言中的类、方法、变量、参数和包等都可以被标注, 标注可以通过反射获取标注内容,相当于在代码层面加了一层 AOP 的访问逻辑控制。

package cn.sdp.candy.mail.service.openapi.v20210108.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author: sdp
 * @create: 2022-01-08 22:40
 * @description: 邮件服务
 **/
// @RestController 等价于 @Controller + @ResponseBody,只不过不能返回 jsp 页面
// @RequestMapping 设置 router
@RestController
@RequestMapping(value = "mail")
public class MailController {
    @RequestMapping(value = "/demo")
    public String demo() {
        return "Send mail success~";
    }
}

2.2 创建 application.yml 项目配置文件

本文中使用 application.yml 来作为配置文件,删除掉原 resources->application.properties 的文件。

yaml 文件是一个可读性高,用来表达数据序列化的格式

# 服务端口号,默认80
server:
  port: 80
spring:
  # 服务名称
  application:
    name: common-mail-service

3. 启动项目

完成上述两步文件创建后,项目目录如下图:

image.png

下一步就是验证时刻!下面介绍两种启动方式:

  1. 本地我们可以使用 IDEA 本身内置的 Tomcat 容器来启动项目

image.png

  1. 通过 mvn 打包并运行 jar 包

在 IDEA cli 或在 命令行手动执行 mvn clean package,等待执行成功

image.png

image.png

发现 target 目录下生成 xxxx.jar(刚刚打包好的 jar 包) ,手动执行 java -jar xxxx.jar

image.png

以上两种方式均可完成项目启动,Spring 会打印一些启动日志,完成启动

image.png

4. 验证服务功能

在浏览器中访问 http://localhost/mail/demo 即可看到我们的输出 Send mail success~

image.png

三、小结

本篇中我们快速搭建了一个 Spring Boot 的微型服务,主要是作为拉通整个 QuickStart 流程的简单 demo,当然这个服务还有很多扩展空间,再次就不过多描述了。

四、下节预告

本节中我们完成了可用的 Web 服务,下节中我们会将项目上传至 Github 代码仓中并利用 Github Actions 的 CI 流程,自动化打通项目上传、镜像打包等过程,供最后的 K8S 部署使用。