近来很久没有光顾spring这一套了,今天趁着空闲时间回顾了以前的 SpringBoot 基础,简单敲了一个 Demo 来review了一下知识点,现在把基本内容整理成博客,方便后续回顾~以及希望能够帮到你们回顾或学习~
前言
SpringBoot 是 Java 后端开发中非常重要的框架,主打 "约定大于配置",能快速搭建项目、减少繁琐的配置。这次复习没有搞复杂的功能,就从最基础的启动类、配置文件、实体类、控制器 入手,写了几个不同类型的接口,把核心的基础知识点过一遍。
一、项目基础搭建
1. 项目结构
本次的Demo的核心结构遵循 SpringBoot 的标准规范,主要目录 / 文件如下:
XML
src/main/
├── java/com/liu/boot_1/
│ ├── Boot1Application.java // 项目启动类
│ ├── controller/HelloController.java // 接口控制器
│ └── entity/Users.java // 实体类
└── resources/
└── application.yml // 核心配置(端口、上下文路径)
由于只是简单回顾所有没有内些服务层,持久层,异常处理等等
创建项目

选择模板
简单勾选一个Spring Web即可

二、项目核心代码解析
1. 启动类:SpringBoot 的入口
首先是项目的启动类Boot1Application.java,这是 SpringBoot 项目的 "总开关":
java
package com.liu.boot_1;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Boot1Application {
public static void main(String[] args) {
SpringApplication.run(Boot1Application.class, args);
}
}
@SpringBootApplication:这个注解是核心,整合了@Configuration(配置类)、@EnableAutoConfiguration(自动配置)、@ComponentScan(组件扫描),不用手动写一堆配置,SpringBoot 会自动扫描当前包及子包下的组件。(初学者先pass这一趴,简单了解了解)main方法:通过SpringApplication.run()启动应用,这是 Java 程序的入口,运行这个方法就能启动 SpringBoot 项目啦。
2. 配置文件:定制项目基础信息
SpringBoot 支持**application.properties** 和**application.yml/yaml**两种配置文件但我更推荐使用后者,因为写起来代码更简洁层次关系清晰
java
# application.yml
server:
port: 8081
servlet:
context-path: /liu
我这里就简单写了写端口和和项目上下文路径
- port
: 8081:项目启动后监听的端口,默认是 8080,我改成了 8081 ; - context-path
: /liu:项目的上下文路径,访问接口时需要在端口后加这个路径(比如访问 /hello 接口,完整路径是http://localhost:8081/liu/hello)。
Tip: 写配置文件的时候一定要注意缩进 冒号":"后面有一个空格切记
3. 实体类:封装请求数据
这里写了一个简单的**Users**实体类,用来接收 Post 请求的 JSON 参数:
java
package com.liu.boot_1.entity;
import lombok.Data;
//@Data
public class Users {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- 主要是**
name** 和**age**两个属性,以及对应的 getter/setter 方法:SpringBoot 解析 JSON 请求体时,需要通过 get/set 方法绑定属性值 - 注释掉的**
@Data**:这是 Lombok 的注解,能自动生成 getter/setter、toString 等方法,不用手动写,后续加上这个注解可以简化代码。如需使用请在pom文件中加上依赖。
4. 控制器:编写核心接口
HelloController 是这次复习的核心,用**@RestController**写了多个不同类型的接口,覆盖了 SpringBoot 基础接口的常见场景:
java
package com.liu.boot_1.controller;
import com.liu.boot_1.entity.Users;
import org.springframework.web.bind.annotation.*;
@RestController
public class HelloController {
// 简单的GET接口
@RequestMapping("/hello")
public String hello(){
return "hello";
}
// 路径变量@PathVariable
@GetMapping("/{id}")
public String h1(@PathVariable int id){
return "hello" + id;
}
// 路径变量 + 请求参数
@GetMapping("/{id}/detail")
public String h2(@PathVariable int id, String name) {
return "hello" + id + " " + name;
}
// Post请求 + @RequestBody接收JSON
@PostMapping("/user")
public String h3(@RequestBody Users users) {
return "你好" +" " + users.getName() + " " + "年龄" + users.getAge();
}
// 路径变量 + Post请求 + @RequestBody
@PostMapping("/{id}/user")
public String h4(@PathVariable int id, @RequestBody Users users){
return "你好" + " " + users.getName() + " " + "年龄" + users.getAge() + " " + "id" + id;
}
}
逐个解析接口要点:
@RestController:等价于@Controller+ @ResponseBody,表示这个类是控制器,且所有方法的返回值都会直接作为响应体(而不是跳转页面),适合写接口。/hello接口:用@RequestMapping(默认支持 GET/POST 等所有请求方式),返回简单字符串,测试项目是否能正常访问。- 路径变量
@PathVariable:/{id}和/{id}/detail接口,通过@PathVariable获取 URL 中的动态参数(比如访问/123,id 就等于 123);h2方法还加了String name,会自动从请求参数中获取(比如/123/detail?name=张三)。 - Post 接口 +
@RequestBody:/user和/{id}/user接口,用@PostMapping限定 Post 请求,通过@RequestBody接收 JSON 格式的请求体,绑定到**Users**对象上,适合传递复杂参数(比如表单、对象)。
三、接口测试小 Tips
GET
GET 接口:直接用浏览器访问即可,比如**http://localhost:8081/liu/1/detail?name=刘** ,会返回hello1刘。
POST
Post 接口:需要用 PostMan、Apifox 等工具,设置请求方式为 Post,请求体选 JSON 格式(比如{"name":"刘","age":20}),访问**http://localhost:8081/liu/user** ,会返回你好 刘 年龄20。
这里我用apifox演示

四、小结
这次review没有搞复杂的功能,只是把SpringBoot最基础的 "启动 - 配置 - 接口" 流程走了一遍,重新理清了一些细节
另外:
- SpringBoot 的 "约定大于配置" 真很方便,不用像 SSM 那样配一堆 xml 文件;
- 接口参数接收的几种方式(路径变量、请求参数、JSON 请求体)要分清场景;
- 实体类的 getter/setter、配置文件的缩进这些小细节,一不小心就会踩坑。
这次回顾把SpringBoot最基础的接口开发、配置、参数接收都过了一遍,简单,但基础打牢才是核心,赶快动手吧。后续关于springboot的review内容得看作者什么时候又有"空闲时间了"
