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

Java 大视界 -- Java 大数据在智能家居环境监测与智能调节中的应用拓展(423)

Java 大视界 -- Java 大数据在智能家居环境监测与智能调节中的应用拓展(423)

Java 大视界 -- Java 大数据在智能家居环境监测与智能调节中的应用拓展(423) * 引言: * 快速上手指南:3 步跑通智能家居 Demo(新手友好) * Step 1:环境准备(必装软件清单) * Step 2:代码运行(按顺序执行) * Step 3:效果验证(用 Postman 模拟数据) * 正文: * 一、智能家居环境监测与调节的核心痛点 * 1.1 设备数据的 “异构化” 困境 * 1.1.1 多源数据的 “协议壁垒” * 1.1.2 数据规模的 “爆发式增长” * 1.2 实时调节的 “滞后性” 痛点 * 1.

【离散化 线段树 二分查找】3661可以被机器人摧毁的最大墙壁数目|2525

【离散化 线段树 二分查找】3661可以被机器人摧毁的最大墙壁数目|2525

本文涉及知识点 【C++】树状数组的使用、原理、封装类、样例 C++线段树 C++二分查找 3661. 可以被机器人摧毁的最大墙壁数目 一条无限长的直线上分布着一些机器人和墙壁。给你整数数组 robots ,distance 和 walls: robots[i] 是第 i 个机器人的位置。 distance[i] 是第 i 个机器人的子弹可以行进的 最大 距离。 walls[j] 是第 j 堵墙的位置。 每个机器人有 一颗 子弹,可以向左或向右发射,最远距离为 distance[i] 米。 子弹会摧毁其射程内路径上的每一堵墙。机器人是固定的障碍物:如果子弹在到达墙壁前击中另一个机器人,它会 立即 在该机器人处停止,无法继续前进。

【OpenClaw】揭秘 Secure DM Pairing:如何为你的 AI 机器人构建安全私信访问机制

【OpenClaw】揭秘 Secure DM Pairing:如何为你的 AI 机器人构建安全私信访问机制 在构建基于 LLM 的聊天机器人(如 Telegram、WhatsApp Bot)时,如何控制谁能与机器人对话是一个核心安全问题。直接开放访问可能导致 Token 滥用,而手动配置白名单又过于繁琐。 OpenClaw 提供了一套优雅的解决方案,称为 “Secure DM Pairing” (安全私信配对)。本文将深入解析这套机制的运作流程、使用指令以及底层的代码实现。 注意本文基于 OpenClaw v2026.1.29 版本源码分析。 1. 什么是 Secure DM Pairing? Secure DM Pairing 是 OpenClaw 网关默认的一种访问控制策略。 当一个未授权的用户首次通过私信(Direct Message)

【机器人】机器人方向的顶会--自用

机器人领域的顶会主要分为 “跨领域旗舰顶会”(覆盖机器人全方向,含金量最高)和 “细分方向顶会”(聚焦感知、决策、控制、人机交互等子领域),均为 CCF A 类或领域内公认的顶级会议,适合跟踪前沿研究、投稿交流。结合你之前关注的 “视觉算法、SLAM、强化学习、具身智能、移动 / 机械臂控制” 等方向,整理如下: 一、机器人领域旗舰顶会(必关注,全方向覆盖) 这两个是机器人领域的 “双子星”,跨感知、决策、控制、硬件、应用等所有方向,是行业内最权威的会议,投稿范围广、影响力最大。 1. ICRA(IEEE International Conference on Robotics and Automation) 定位:机器人领域