本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
一、Spring Boot 简介
Spring Boot 是在 Spring 框架基础上创建的全新框架。Spring Boot 使用更加简单,而且功能更加丰富。
二、快速上手
1. 通过 IntelliJ IDEA上快速创建项目
1.1 通过 Spring Initializr 快速创建一个基于 Maven 的 Spring Boot 项目
图中 Group、Artifact 是为了保证项目唯一性而提出的,会依赖于这两个 ID 来从 Maven 仓库中查找项目。
groupId 一般分为多段,常见的划分逻辑可以是:第一段为域,第二段为公司名称,其中域又分为 org、com、cn 等,org 为非营利组织,com 为商业组织,cn 为中国,这块的维度可以按照自定义来设计。
比如本文中的项目名为 common-mail-service,可以将 groupId 设置为 cn.sdp.candy.common,cn 表示域为中国,sdp 是组织缩写,artifactId 设置为 common-mail-service,表示项目名称是 common-mail-service。 Package Name 为项目的包路径,即项目实际的物理路径。
常见问题:未找到
Spring Initializr选项?打开File->Settings->Plugins->installed然后搜索spring boot,会发现有一个内置的Spring Boot插件没有启用,处于Disable状态,直接打钩启用,然后 OK 重启即可。
1.2 勾选依赖,Web 下的 Spring Web 选项,点击 Finish 即可
1.3 项目创建成功
简单看下 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文件
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
编辑刚刚创建的 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. 启动项目
完成上述两步文件创建后,项目目录如下图:
下一步就是验证时刻!下面介绍两种启动方式:
- 本地我们可以使用 IDEA 本身内置的 Tomcat 容器来启动项目
- 通过 mvn 打包并运行 jar 包
在 IDEA cli 或在 命令行手动执行 mvn clean package,等待执行成功
发现 target 目录下生成 xxxx.jar(刚刚打包好的 jar 包) ,手动执行 java -jar xxxx.jar
以上两种方式均可完成项目启动,Spring 会打印一些启动日志,完成启动
4. 验证服务功能
在浏览器中访问 http://localhost/mail/demo 即可看到我们的输出 Send mail success~
三、小结
本篇中我们快速搭建了一个 Spring Boot 的微型服务,主要是作为拉通整个 QuickStart 流程的简单 demo,当然这个服务还有很多扩展空间,再次就不过多描述了。
四、下节预告
本节中我们完成了可用的 Web 服务,下节中我们会将项目上传至 Github 代码仓中并利用 Github Actions 的 CI 流程,自动化打通项目上传、镜像打包等过程,供最后的 K8S 部署使用。