Spring Boot 开发入门:从 0 到 1 搭建第一个 Web 项目

前言

Spring Boot 是由 Pivotal 团队推出的基于 Spring 框架的轻量级开发框架,它简化了 Spring 应用的配置流程,通过 “约定大于配置” 的核心思想,让开发者无需繁琐的 XML 配置就能快速搭建和运行项目。本文将从环境准备、项目创建、核心代码编写到运行测试,手把手教你入门 Spring Boot 开发,全程附带可运行的代码示例,新手也能轻松上手!

一、前置准备

1. 环境要求

  • JDK:推荐 JDK 8 及以上(Spring Boot 3.x 需 JDK 17+,本文以 Spring Boot 2.7.x + JDK 8 为例);
  • Maven/Gradle:项目构建工具,本文使用 Maven;
  • 开发工具:IntelliJ IDEA(推荐)或 Eclipse;
  • 浏览器 / Postman:用于接口测试。

2. 验证环境

打开终端 / 命令行,执行以下命令验证环境是否配置成功:

bash

运行

# 验证JDK java -version # 验证Maven mvn -v 

若输出对应版本信息,说明环境配置完成。

二、创建 Spring Boot 项目

方式 1:通过 Spring Initializr(官方脚手架)创建

这是最推荐的方式,可快速生成标准化项目结构:

  1. 打开 Spring Initializr 官网
  2. 配置项目基础信息:
    • Project:Maven Project(本文选 Maven);
    • Language:Java;
    • Spring Boot Version:2.7.x(稳定版);
    • Project Metadata
      • Group:自定义(如 com.example);
      • Artifact:项目名(如 spring-boot-demo);
      • Name:spring-boot-demo;
      • Description:Spring Boot 入门示例;
      • Package Name:com.example.demo;
      • Packaging:Jar(Spring Boot 推荐 Jar 包运行);
      • Java Version:8;
  3. 添加依赖:在「Dependencies」中搜索并添加 Spring Web(Web 开发核心依赖);
  4. 点击「Generate」下载项目压缩包,解压后用 IDEA 打开。

方式 2:IDEA 直接创建(更便捷)

  1. 打开 IDEA → 新建项目 → 选择「Spring Initializr」;
  2. 按上述步骤配置项目信息和依赖,点击「Next」→「Finish」,IDEA 会自动下载依赖并生成项目结构。

三、项目核心结构解析

生成的项目默认结构如下(核心目录):

plaintext

spring-boot-demo/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── demo/ │ │ │ └── DemoApplication.java // 项目启动类(核心) │ │ └── resources/ │ │ ├── application.properties // 全局配置文件 │ │ ├── static/ // 静态资源(CSS/JS/图片) │ │ └── templates/ // 模板文件(Thymeleaf等) │ └── test/ // 测试目录 └── pom.xml // Maven依赖配置文件 
  • DemoApplication.java:项目入口,包含 @SpringBootApplication 注解,启动 Spring Boot 应用;
  • application.properties:配置文件,可设置端口、数据库连接等(也可使用.yml 格式);
  • pom.xml:管理项目依赖,Spring Boot 已内置父依赖,无需手动配置版本。

四、核心代码编写

1. 启动类(自动生成,无需修改)

DemoApplication.java 是项目的启动入口,代码如下:

java

运行

package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * Spring Boot 启动类 * @SpringBootApplication 是核心注解,包含: * 1. @Configuration:标记为配置类 * 2. @EnableAutoConfiguration:开启自动配置 * 3. @ComponentScan:扫描当前包及子包下的组件 */ @SpringBootApplication public class DemoApplication { public static void main(String[] args) { // 启动Spring Boot应用 SpringApplication.run(DemoApplication.class, args); } } 

2. 编写第一个 Controller(接口开发)

在 com.example.demo 包下新建 controller 目录,创建 HelloController.java,用于处理 HTTP 请求:

java

运行

package com.example.demo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @RestController:组合注解,等价于 @Controller + @ResponseBody * 表示该类是控制器,且返回值直接作为JSON/字符串响应,而非视图 */ @RestController @RequestMapping("/hello") // 统一请求路径前缀 public class HelloController { // 示例1:基础GET请求,返回字符串 @GetMapping("/say") public String sayHello() { return "Hello, Spring Boot!"; } // 示例2:带路径参数的GET请求 @GetMapping("/user/{name}") public String sayHelloToUser(@PathVariable String name) { return "Hello, " + name + "! Welcome to Spring Boot World."; } // 示例3:返回JSON格式数据(Spring Boot自动序列化) @GetMapping("/info") public User getUserInfo() { User user = new User(); user.setId(1); user.setName("张三"); user.setAge(25); return user; } // 内部静态类:用户实体 static class User { private Integer id; private String name; private Integer age; // 必须提供getter方法,否则JSON序列化会缺失字段 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } } } 

3. 配置文件自定义(可选)

默认配置文件 application.properties 可修改端口、应用名等:

properties

# 应用名称 spring.application.name=spring-boot-demo # 服务端口(默认8080,可自定义) server.port=8081 # 编码格式 server.servlet.encoding.force=true server.servlet.encoding.charset=UTF-8 

也可改为 application.yml(更简洁的格式):

yaml

spring: application: name: spring-boot-demo server: port: 8081 servlet: encoding: force: true charset: UTF-8 

五、运行与测试项目

1. 启动项目

有两种启动方式:

  • 方式 1:在 IDEA 中直接运行 DemoApplication.java 的 main 方法;

方式 2:通过 Maven 命令启动(终端进入项目根目录):bash运行

# 打包(可选) mvn clean package # 启动项目 mvn spring-boot:run 

启动成功后,控制台会输出如下日志(关键信息):

plaintext

Started DemoApplication in 2.531 seconds (JVM running for 3.012) 

2. 接口测试

打开浏览器或 Postman,访问以下地址验证接口:

  • 测试基础接口:http://localhost:8081/hello/say响应:Hello, Spring Boot!
  • 测试带参数接口:http://localhost:8081/hello/user/李四响应:Hello, 李四! Welcome to Spring Boot World.

测试 JSON 接口:http://localhost:8081/hello/info响应(JSON 格式):json

{ "id": 1, "name": "张三", "age": 25 } 

六、核心知识点补充

1. @SpringBootApplication 注解

该注解是 Spring Boot 的核心注解,整合了三个关键注解:

  • @Configuration:将类标记为配置类,可定义 Bean;
  • @EnableAutoConfiguration:开启自动配置,Spring Boot 根据依赖自动配置组件(如引入 Spring Web 则自动配置 Tomcat、DispatcherServlet);
  • @ComponentScan:扫描当前包及子包下的 @Controller@Service@Repository@Component 等注解的类。

2. 依赖管理

Spring Boot 通过 spring-boot-starter-parent 父依赖统一管理依赖版本,无需手动指定版本号。常用 starter 依赖:

  • spring-boot-starter-web:Web 开发(包含 Tomcat、Spring MVC);
  • spring-boot-starter-data-jpa:JPA 操作数据库;
  • spring-boot-starter-mybatis:MyBatis 整合;
  • spring-boot-starter-test:单元测试。

3. 打包与运行

通过 mvn clean package 可将项目打包为 Jar 包,直接通过以下命令运行(无需部署到 Tomcat):

bash

运行

java -jar target/spring-boot-demo-0.0.1-SNAPSHOT.jar 

七、常见问题及解决

1. 端口被占用

修改 application.properties 中的 server.port(如改为 8082),或关闭占用端口的进程。

2. 依赖下载慢

在 pom.xml 中添加阿里云 Maven 镜像:

xml

<repositories> <repository> <id>aliyunmaven</id> <url>https://maven.aliyun.com/repository/public</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>aliyunmaven</id> <url>https://maven.aliyun.com/repository/public</url> </pluginRepository> </pluginRepositories> 

3. 启动时报 “找不到主类”

检查 pom.xml 中是否添加了 Spring Boot 插件:

xml

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 

八、总结

本文从环境准备到项目运行,完整演示了 Spring Boot 第一个 Web 项目的搭建过程,核心要点:

  1. Spring Boot 核心是 “约定大于配置”,通过 starter 依赖和自动配置简化开发;
  2. @SpringBootApplication 是启动类的核心注解,整合了配置、自动配置、组件扫描;
  3. @RestController 用于开发 RESTful 接口,返回 JSON / 字符串响应;
  4. 项目可直接打包为 Jar 包运行,无需外部容器。

后续可进一步学习 Spring Boot 整合数据库(MyBatis/MySQL)、拦截器、全局异常处理、配置文件多环境切换等内容,逐步掌握 Spring Boot 核心能力。如果本文对你有帮助,欢迎点赞收藏,有疑问可在评论区交流~

Read more

WebP与Photoshop的格式革新:WebPShop插件全方位解析

WebP与Photoshop的格式革新:WebPShop插件全方位解析 【免费下载链接】WebPShopPhotoshop plug-in for opening and saving WebP images 项目地址: https://gitcode.com/gh_mirrors/we/WebPShop WebP格式支持与Photoshop插件的结合,为设计师带来了高效处理现代图像格式的全新可能。WebPShop作为一款开源插件,彻底打破了Photoshop对WebP格式的兼容性限制,让专业设计流程与现代图像格式无缝衔接。本文将从基础认知、进阶应用到问题解决,全面介绍这款工具如何重塑WebP图像处理流程。 基础认知:WebPShop插件核心价值 插件功能实现:从格式支持到完整工作流 WebPShop插件的核心价值在于实现了Photoshop与WebP格式的深度整合。通过安装该插件,设计师可以直接在Photoshop中打开、编辑和保存WebP图像文件,无需进行格式转换。这种原生级别的支持不仅简化了工作流程,还确保了图像质量在处理过程中不会受损。 WebP作为一种现代图像格

耳机阻抗与前端适配:32Ω、150Ω、300Ω 耳机的功放推力需求分析

耳机阻抗与前端适配分析 耳机阻抗(单位:欧姆,Ω)直接影响前端设备的推力需求。根据电功率公式: $$P = \frac{U^2}{R}$$ 其中$P$为功率,$U$为电压,$R$为阻抗。可知在相同电压下,阻抗越高,耳机获得的功率越小。以下是具体分析: 1. 32Ω 耳机 * 推力需求:低 * 适配设备:智能手机、普通播放器等便携设备 * 原理: 低阻抗使耳机在低电压下即可获得足够功率。例如驱动1mW功率所需电压: $$U = \sqrt{P \times R} = \sqrt{0.001 \times 32} \approx 0.18 , \text{V}$$ 普通手机输出(

.NET Core WebAPI 开发工程师的面试问题

.NET Core WebAPI 开发工程师的面试问题

让我们一起走向未来 🎓作者简介:全栈领域优质创作者 🌐个人主页:百锦再@新空间代码工作室 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[[email protected]] 📱个人微信:15045666310 🌐网站:https://meihua150.cn/ 💡座右铭:坚持自己的坚持,不要迷失自己!要快乐 目录 * 让我们一起走向未来 * 一、.NET Core 基础 * 1. **什么是 .NET Core,和 .NET Framework 有什么区别?** * 2. **什么是依赖注入(DI)?为什么要使用依赖注入?** * 3. **如何在 .NET Core 中创建一个 Web API?** * 二、Web

实测有效!Playwright_Puppeteer模拟人工操作,攻克纯前端渲染页面(避坑全复盘)

实测有效!Playwright_Puppeteer模拟人工操作,攻克纯前端渲染页面(避坑全复盘)

前言:做爬虫开发、前端自动化测试的同学,肯定都有过这样的崩溃时刻——面对Vue3、React、Svelte开发的纯前端渲染页面(SPA),用requests抓回来全是空HTML;用Playwright/Puppeteer写个简单脚本,点击、滑动全是机械操作,跑不了3次就被网站识别为自动化工具,要么弹滑动验证码,要么直接封禁IP;好不容易绕开检测,又因为页面渲染时机没抓准,拿到的全是无效数据。 我在过往4个纯前端渲染页面抓取项目中(电商商品详情SPA、资讯平台滚动加载页面、短视频前端渲染列表、后台管理系统前端数据抓取),踩遍了Playwright和Puppeteer的所有坑:从机械滑动被检测、固定等待时间导致数据缺失,到浏览器指纹暴露、窗口大小异常被拦截,再到双工具选型踩坑,最终沉淀出一套“极致模拟人工操作”的高级实战方案,能稳定攻克90%以上的纯前端渲染页面。 不同于市面上泛泛而谈的AI化教程,本文全程无空洞理论,每一个技巧都经过真实项目实测,每一段代码都可直接复用,每一个避坑点都是我实打实栽过的跟头。重点讲解“如何让自动化操作无限贴近真人”,兼顾Playwright和Puppet