【Spring Boot 快速入门】一、入门
目录
- Spring Boot 简介
- Web 入门
-
- Spring Boot 快速入门
- HTTP 协议
-
- 概述
- 请求协议
- 响应协议
- 解析协议
- Tomcat
Spring Boot 简介
Spring Boot 是由 Pivotal 团队(后被 VMware 收购)开发的基于 Spring 框架的开源项目,于 2014 年首次发布。其核心目标是简化 Spring 应用的搭建和开发流程,让开发者能够快速构建独立运行、生产级别的 Spring 应用。
核心特点
- 自动配置(Auto-configuration)
- 根据项目中的依赖(如
spring-boot-starter-web
),自动完成相关组件的配置,减少手动 XML 或 Java 配置。 - 例如:引入
spring-boot-starter-web
后会自动配置 Spring MVC、Tomcat 等。
- 根据项目中的依赖(如
- 独立运行(Standalone)
- 内置 Servlet 容器(Tomcat、Jetty 等),无需外部部署。
- 可通过
java -jar
启动整个应用,适合容器化部署。
- Starter 依赖管理
- 提供丰富的
starter
模块(如starter-data-jpa
、starter-security
),一行依赖即可集成常用技术。 - 统一版本管理,避免冲突和繁琐配置。
- 提供丰富的
- 无 XML 配置,注解驱动
- 使用注解(如
@SpringBootApplication
、@RestController
)代替传统 XML,降低配置复杂度。 - 默认配置 + 注解方式提升开发效率。
- 使用注解(如
- 生产级特性
- 提供如 Actuator、健康检查、外部化配置、指标监控等功能,便于部署和运维。
适用场景
- 快速构建微服务中的独立服务
- 构建 RESTful API 或传统 Web 应用
- 中小型项目的敏捷开发与快速部署
- 与第三方中间件(如 MyBatis、Redis、RabbitMQ)集成开发
与 Spring 的关系
-
Spring Boot 并不是替代 Spring,而是对其的增强和封装。
-
它基于 Spring 的核心特性(如 IoC、AOP),并提供自动配置、内嵌容器、starter 依赖等扩展能力。
-
可理解为:
Spring Boot = Spring + 自动配置 + 内嵌容器 + Starter 模块
优势总结
- 开发效率高:最小化配置,聚焦业务逻辑
- 上手门槛低:统一结构和约定优于配置
- 可维护性强:自动管理依赖与版本
- 生态整合好:天然支持 Spring Cloud 等微服务组件
Web 入门
Spring Boot 快速入门
需求:使用 Spring Boot 开发一个 web 应用,浏览器发起请求“/hello”后,给浏览器返回字符串\"Hello World ~\"
步骤:
-
创建 Spring Boot 工程,并勾选 web 开发相关依赖
-
定义 HelloController 类,添加方法 hello,并添加注解
package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;// 请求处理类@RestControllerpublic class HelloController { @RequestMapping(\"/hello\") public String hello() { return \"Hello World~\"; }}
-
运行测试
运行启动类,并在浏览器中输入“localhost:8080/hello”
HTTP 协议
概述
概念:Hyper Text Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
特点:
- 基于 TCP 协议:面向连接,安全
- 基于请求-响应模型——一次请求对应一次响应
- HTTP 协议是无状态的协议:
- 对于事务处理没有记忆能力,每次请求-响应都是独立的
- 缺点:多次请求间不能共享数据
- 优点:速度快
请求协议
-
结构组成
-
请求行:首行,格式
[请求方法] [资源路径] [协议/版本]
例:GET /brand/findAll?name=OPPO&status=1 HTTP/1.1
-
请求头:从第二行开始,
key: value
格式,传递元信息(如客户端类型、支持的数据格式等)
例:Content-Type: application/json
(声明请求体数据格式) -
请求体:仅 POST 请求有,存放请求参数(GET 请求参数在请求行的 URL 里)
例:{\"status\":1,\"brandName\":\"Scarletkite\"...}
(JSON 格式参数)
-
-
请求方式差异(GET vs POST)
?name=OPPO...
)-
核心总结
-
清晰 HTTP 请求的 “三段式” 结构,理解 请求行(做什么) → 请求头(怎么传) → 请求体(传什么) 的分工
-
区分 GET/POST 适用场景,开发 / 调试接口时能选对方式、解析对应参数位置
-
响应协议
-
结构组成
响应由 3 部分 组成,从上到下依次是:
- 响应行:首行,格式
[协议/版本] [状态码] [状态描述]
例:HTTP/1.1 200 OK
(协议 HTTP/1.1,状态码 200,描述 OK) - 响应头:
key: value
格式,传递元信息(如内容类型、缓存策略等)
例:Content-Type: application/json
(响应体是 JSON 格式) - 响应体:最后部分,存放实际响应数据(如接口返回的 JSON、HTML 内容 )
- 响应行:首行,格式
-
状态码分类与含义
状态码是响应行的核心,用 1xx ~ 5xx 分类表示请求处理结果:
-
常见响应头的作用
响应头传递 “辅助信息”,常用字段:
-
Content-Type
:响应体的数据格式(如application/json
表示返回 JSON) -
Content-Length
:响应体的字节长度 -
Cache-Control
:控制客户端缓存策略(如max-age=300
表示缓存 300 秒) -
Set-Cookie
:给浏览器设置 Cookie
-
-
核心总结
HTTP 响应分 “响应行(状态码核心)→ 响应头(传元信息)→ 响应体(传实际数据)” 三段,状态码用 1~5 开头区分 “临时、成功、重定向、客户端错、服务器错”,响应头补充数据格式、缓存等细节,最终通过响应体返回业务数据
解析协议
浏览器自带了 HTTP 协议解析功能。浏览器在用户发起网页访问等操作时,会自动进行一系列与 HTTP 协议相关的操作。而服务端要实现 HTTP 协议解析功能,要手搓以下代码,就显得很麻烦。
import java.io.*;import java.net.*;import java.nio.charset.StandardCharsets;public class SimpleHttpServer { public static void main(String[] args) throws IOException { // 创建服务器Socket,监听8080端口 ServerSocket serverSocket = new ServerSocket(8080); System.out.println(\"服务器已启动,监听端口: 8080\"); while (true) { // 等待客户端连接 Socket clientSocket = serverSocket.accept(); System.out.println(\"新客户端连接: \" + clientSocket.getInetAddress()); // 处理客户端请求 handleClient(clientSocket); } } private static void handleClient(Socket clientSocket) throws IOException { try ( // 获取输入流,读取客户端请求 BufferedReader in = new BufferedReader( new InputStreamReader(clientSocket.getInputStream(), StandardCharsets.UTF_8) ); // 获取输出流,向客户端发送响应 OutputStream out = clientSocket.getOutputStream() ) { // 读取请求行 String requestLine = in.readLine(); if (requestLine == null) { return; } System.out.println(\"请求行: \" + requestLine); // 读取请求头 String headerLine; while ((headerLine = in.readLine()) != null && !headerLine.isEmpty()) { System.out.println(\"请求头: \" + headerLine); } // 构建响应内容 String responseBody = \"Hello, HTTP!
这是一个简单的HTTP响应
\"; // 构建响应头 String response = \"HTTP/1.1 200 OK\\r\\n\" + \"Content-Type: text/html; charset=UTF-8\\r\\n\" + \"Content-Length: \" + responseBody.getBytes(StandardCharsets.UTF_8).length + \"\\r\\n\" + \"Connection: close\\r\\n\" + \"\\r\\n\" + // 空行分隔响应头和响应体 responseBody; // 发送响应 out.write(response.getBytes(StandardCharsets.UTF_8)); out.flush(); } finally { clientSocket.close(); System.out.println(\"客户端连接已关闭\"); } }}
由于以上解析是固定的,所以出现了 Web 服务器,Web 服务器是一个软件程序,对 HTTP 协议的操作进行封装,使得程序员不必直接对协议进行操作,让 Web 开发更加便捷。主要功能是“提供网上信息浏览服务”。
Tomcat
Tomcat(全称 Apache Tomcat)是由 Apache 软件基金会开发和维护的一款 开源的 Web 服务器与 Servlet 容器,用于运行基于 Java 的 Web 应用程序。它广泛应用于中小型企业和开发测试环境中,是学习和部署 Java Web 的首选服务器。
Spring Boot 内置了 Tomcat,默认使用的是 org.apache.catalina.startup.Tomcat
启动类,实现嵌入式部署:
@SpringBootApplicationpublic class App { public static void main(String[] args) { SpringApplication.run(App.class, args); }}
可以通过配置文件指定端口:
server: port: 8080