SpringBoot 基础入门

近来很久没有光顾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内容得看作者什么时候又有"空闲时间了"

相关推荐
不懂的浪漫2 小时前
mqtt-plus 架构解析(六):多 Broker 管理,如何让一个应用同时连接多个 MQTT 服务
spring boot·分布式·物联网·mqtt·架构
风吹迎面入袖凉2 小时前
【Redis】Redisson的可重入锁原理
java·redis
w6100104662 小时前
cka-2026-ConfigMap
java·linux·cka·configmap
不懂的浪漫2 小时前
mqtt-plus 架构解析(十):从内部项目到开源框架,mqtt-plus 的抽取过程与决策
spring boot·mqtt·架构·开源
语戚3 小时前
力扣 968. 监控二叉树 —— 贪心 & 树形 DP 双解法递归 + 非递归全解(Java 实现)
java·算法·leetcode·贪心算法·动态规划·力扣·
quxuexi3 小时前
网络通信安全与可靠传输:从加密到认证,从状态码到可靠传输
java·安全·web
hrhcode4 小时前
【java工程师快速上手go】二.Go进阶特性
java·golang·go
小碗羊肉6 小时前
【从零开始学Java | 第三十一篇下】Stream流
java·开发语言