【JAVA】python转java:Spring Boot 入门

Spring Boot = 帮你自动配置好的 Spring 后端项目脚手架。它不是新语言,也不是替代 Spring,而是让你更快搭建后端服务。


1. 先理解 SSM 是什么

SSM 指的是:

名称 作用 类比 Python Web
Spring 管理对象、依赖注入、业务层 类似一个大型对象管理容器
Spring MVC 接收 HTTP 请求,写接口 类似 Flask / FastAPI 路由
MyBatis 操作数据库 类似 Python 里的 ORM / SQL Mapper

传统 SSM 项目需要手动配置很多东西:

复制代码
web.xml
spring-mvc.xml
applicationContext.xml
mybatis-config.xml
数据库连接池配置
Tomcat 部署配置
Mapper 扫描配置
Controller 扫描配置
Service 扫描配置

所以初学者经常会觉得:

我只是想写一个接口,为什么要配这么多 XML?

Spring Boot 就是为了解决这个问题。


2. 什么是 Spring Boot?

Spring Boot 是基于 Spring 的快速开发框架。官方对它的定位是:帮助开发者快速创建可以独立运行、面向生产环境的 Spring 应用。(Home)

你可以简单理解为:

复制代码
Spring Boot = Spring + 自动配置 + 内置服务器 + Starter依赖

它帮你做了几件重要的事:

Spring Boot 能做什么 解释
自动配置 根据你引入的依赖自动配置 Spring MVC、Tomcat、JSON 等
内置 Tomcat 不需要你手动安装外部 Tomcat
快速创建 Web 项目 引入 spring-boot-starter-web 就能写接口
简化配置文件 application.propertiesapplication.yml 管理配置
方便打包运行 可以打成 jar,直接 java -jar 运行

3. Spring Boot 开发环境

现在主流 Spring Boot 版本要求至少 Java 17;官方文档显示 Spring Boot 当前版本需要 Java 17 及以上,Maven 需要 3.6.3 或更高版本。(Home)

建议你安装:

复制代码
JDK 17 或 JDK 21
IntelliJ IDEA
Maven
Spring Boot

初学者推荐使用:

复制代码
JDK 17
Maven
Spring Boot 3.x 或 4.x

创建项目最简单的方法是用 Spring Initializr。官方入门文档也建议通过 Spring Initializr 创建 Spring Boot 项目。(Home)

项目选择:

复制代码
Project: Maven
Language: Java
Spring Boot: 3.x / 4.x
Packaging: Jar
Java: 17
Dependencies:
  Spring Web

4. Spring Boot 项目结构

一个最简单的 Spring Boot Web 项目大概长这样:

复制代码
demo
 ├── src
 │   └── main
 │       ├── java
 │       │   └── com.example.demo
 │       │       ├── DemoApplication.java
 │       │       └── controller
 │       │           └── HelloController.java
 │       └── resources
 │           └── application.yml
 └── pom.xml

其中最重要的是这几个:

文件 作用
DemoApplication.java Spring Boot 启动类
HelloController.java 写后端接口
application.yml 写端口、数据库等配置
pom.xml 管理依赖

5. 入口类:DemoApplication

复制代码
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

这里重点看这个注解:

复制代码
@SpringBootApplication

它表示:

复制代码
这是一个 Spring Boot 项目
请自动配置
请扫描当前包及其子包下的组件

所以你的 Controller、Service、Mapper 一般都要放在 com.example.demo 这个包下面,或者它的子包里面。


6. application.properties / application.yml 是什么?

Spring Boot 支持通过 application.propertiesapplication.yml 写配置。官方文档说明,配置可以写在 properties 文件、yaml 文件、环境变量或命令行参数中。(Home)

写法一:application.properties

复制代码
server.port=8080
spring.application.name=demo

写法二:application.yml

复制代码
server:
  port: 8080

spring:
  application:
    name: demo

两者作用一样,只是写法不同。

我更推荐你初学时用 application.yml,层级更清楚。


7. 编写第一个 Spring Boot Web 接口

新建:

复制代码
src/main/java/com/example/demo/controller/HelloController.java

代码如下:

复制代码
package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello Spring Boot!";
    }
}

启动项目后,浏览器访问:

复制代码
http://localhost:8080/hello

你会看到:

复制代码
Hello Spring Boot!

这就是你的第一个后端接口。


8. 再写一个带参数的接口

复制代码
package com.example.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @GetMapping("/user")
    public String getUser(@RequestParam String name) {
        return "你好," + name;
    }
}

访问:

复制代码
http://localhost:8080/user?name=小羊

返回:

复制代码
你好,小羊

这里的:

复制代码
@RequestParam String name

表示从 URL 参数中取值。

也就是:

复制代码
/user?name=小羊

里面的 name 会传给 Java 里的 String name


9. 从 Python 角度理解 Spring Boot 接口

如果你熟悉 Flask,可以这样类比:

Flask 写法

复制代码
@app.route("/hello")
def hello():
    return "Hello"

Spring Boot 写法

复制代码
@GetMapping("/hello")
public String hello() {
    return "Hello";
}

区别是:

复制代码
Flask 用函数写路由
Spring Boot 用类 + 方法 + 注解写路由

Spring Boot 的"绕",主要来自 Java 的面向对象和注解体系。


10. 最小知识闭环

初学者掌握这几个注解就够了:

注解 作用
@SpringBootApplication 启动 Spring Boot 项目
@RestController 声明这是一个接口类
@GetMapping 处理 GET 请求
@PostMapping 处理 POST 请求
@RequestParam 获取 URL 参数
@PathVariable 获取路径参数
@RequestBody 获取 JSON 请求体
@Service 声明业务逻辑类
@Autowired 自动注入对象,后面可以逐渐少用

11. 一个最小完整示例

复制代码
package com.example.demo.controller;

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api")
public class DemoController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello Spring Boot";
    }

    @GetMapping("/user")
    public String user(@RequestParam String name) {
        return "用户名称:" + name;
    }

    @GetMapping("/student/{id}")
    public String student(@PathVariable Integer id) {
        return "学生ID:" + id;
    }
}

访问:

复制代码
http://localhost:8080/api/hello
http://localhost:8080/api/user?name=Tom
http://localhost:8080/api/student/1001

这三个接口分别演示了:

复制代码
普通 GET 接口
URL 参数
路径参数
相关推荐
Love_云宝儿1 小时前
GeoJSON简介
java·gis·地图·jts
小桥流水---人工智能1 小时前
【已解决】ImportError: cannot import name ‘AdamW‘ from ‘transformers.optimization‘
python
芝麻开门GEO2 小时前
泰安GEO优化服务,真的能提升效果吗?
人工智能·python
摇滚侠2 小时前
JDBC 基础到高级一套通关!进阶篇 16-27
java
颜酱2 小时前
选读:工业级调用 LangChain:从 Demo 到企业级应用
python
明志数科2 小时前
4D时序标注技术详解:让机器人理解连续动作的数据基础
java·算法·机器人
颜酱2 小时前
LangChain 调用大模型实战:从跑通到服务商与模型选型
python·langchain
_qingche2 小时前
H2 数据库到 MySQL 数据迁移
java·数据库·spring boot·mysql·spring·重构·kotlin
可乐ea3 小时前
【知识获取与分享社区项目 | 项目日记第 21 天】索引构建与联想建议:Outbox 增量更新 + Completion Suggester
java·大数据·mysql·elasticsearch·搜索引擎