SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序
SpringBoot Web 入门指南:从零搭建第一个SpringBoot程序
一、Web开发基础:静态/动态资源与B/S、C/S架构解析
资源类型
类型 | 描述 | 示例 | 主要职责 |
---|---|---|---|
静态资源 | 服务器上存储的固定不变的数据 | HTML, CSS, JS, 图片, 视频 | 页面展示 |
动态资源 | 服务器根据请求动态生成的内容 | Spring框架, Servlet, JSP | 逻辑处理 |
系统架构
架构模式 | 全称 | 特点 | 优缺点 |
---|---|---|---|
B/S架构 | Browser/Server (浏览器/服务器) | 客户端只需浏览器 | 维护方便,但体验一般 |
C/S架构 | Client/Server (客户端/服务器) | 需专用客户端软件 | 体验不错,但开发维护麻烦 |
二、Spring 与 Spring Boot 核心介绍
1. Spring 框架
一个强大的、开源的 Java 应用程序开发框架和容器,提供一站式企业级应用开发解决方案。
核心思想
- 控制反转 (IoC):将对象的创建和管理权交给容器
- 依赖注入 (DI):容器自动注入对象所需的依赖
主要优势
- 松耦合设计:组件间依赖关系减弱,提高灵活性
- 易于测试:依赖注入使单元测试更简单
- 模块化结构:可按需选择使用不同功能模块
2. Spring Boot
Spring 框架的扩展,旨在简化 Spring 应用的初始搭建和开发过程。
核心特性
- 自动配置:根据依赖智能配置应用
- 起步依赖:预置依赖组合,解决版本冲突
- 内嵌服务器:打包成可执行 JAR,包含内嵌服务器
- 开箱即用:几乎零配置快速创建生产级应用
设计理念
“约定大于配置” - 减少决策点,提高开发效率
3. 对比总结
特性 | Spring Framework | Spring Boot |
---|---|---|
定位 | 基础框架,提供全面解决方案 | 开发加速器,简化Spring使用 |
配置方式 | 需要大量显式配置 | 约定大于配置,自动配置 |
依赖管理 | 手动管理依赖和版本 | Starter 一站式依赖管理 |
部署方式 | 打包成WAR,需外部服务器 | 可执行JAR,内嵌服务器 |
主要优势 | 灵活性高、可定制性强 | 开发快速、易于上手 |
适用场景 | 需要高度定制的复杂应用 | 快速开发、微服务、原型验证 |
Spring 是引擎和底盘(提供核心能力)
Spring Boot 是预装好的整车(基于Spring,提供开箱即用的体验)
三、Spring Boot入门
1.在IDEA里面创建一个Spring Boot项目
注意选项:
语言Java、类型Maven,打包Jar
下一步之后选择web里面的Spring Web(此处我选的Spring Boot是3.5.5版本)
点击创建,下面界面(第一次创建的时候会下载依赖,需要等待一会)
2. 运行第一个SpringBoot程序
以下是pom.xml的信息
起步依赖:
spring-boot-starter-web:包含了web应用开发所需要的常见依赖。
spring-boot-starter-test:包含了单元测试所需要的常见依赖。
官方提供的starter:https://docs.spring.io/spring-boot/docs/3.1.3/reference/htmlsingle/#using.build-systems.starters
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- 父工程 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<!-- 项目坐标 -->
<groupId>com.example</groupId>
<artifactId>springboot-web-1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-web-1</name>
<description>springboot-web-1</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<!-- JDK版本 -->
<properties>
<java.version>21</java.version>
</properties>
<!-- 项目依赖 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
(1)启动类
在src的main方法里面有个Application的文件,这是一个启动类,当我们运行main方法的时候就可以启动这个项目
(2)请求处理类
@RestController
表示当前类是一个请求处理类;
@RequestMapping
后面跟请求路径,比如 @RequestMapping("/hello")
package com.example.springbootweb1;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
@RestController//表示当前类是一个请求处理类
public class HelloController {
@RequestMapping("/hello")
public String hello(String name){
System.out.println("name : " + name);
return "Hello" + name + "~";
}
}
(3)运行项目
运行Application里面的main方法
出现以下界面就说明运行成功
红线划的部分是端口号(默认是8080),此处我用的8081不影响
在浏览器中发送请求localhost:8081/hello?name=Spring%20Boot
即可成功运行项目