Spring Boot入门教程:60分钟快速上手

陈静♪
2025-12-13 21:55
阅读 744

上周五晚上十点半,我还在公司对着 MacBook Pro 屏幕发呆。产品经理又在群里@我:“这个需求明天上线,后端接口今晚能好吗?” 我看了一眼 backlog,心里一万个草泥马奔腾而过——但没办法,谁让我是个靠接外包搞副业的斜杠程序员呢?坐标北京,通勤1小时,主业糊口,副业续命,平时写 Go 和 Python 跑得飞快,结果最近几个外包项目都指名要 Java + Spring Boot,理由居然是“客户那边运维只认 Java”。

行吧,为了那笔可观的尾款,我咬牙把 Mac 上的 IntelliJ IDEA 打开(Windows?那玩意儿我只留着装个浏览器测兼容性),硬着头皮重新拾起三年没碰的 Spring Boot。没想到折腾完发现:这玩意儿现在真的香!比当年那个 XML 配置地狱时代清爽太多了。今天就借着这个机会,给和我一样被“赶鸭子上架”的兄弟们写一篇 60 分钟快速上手指南。


为什么是 Spring Boot?前端同学都看不下去了

先说点实在的。我们做外包的,最怕啥?时间紧、需求变、技术栈杂。上周一个项目,前端用 Vue 写好了页面,数据接口全 mock 好了,就等我这边联调。结果我拿 Python Flask 搞了个原型,客户 IT 部门直接拒了:“我们生产环境只有 OpenJDK,Python 环境审批要两周。” 我当场裂开。

这时候 Spring Boot 的优势就出来了:

  • 约定优于配置:不用再写几百行 XML,启动类加个 @SpringBootApplication 就跑起来了
  • 内嵌 Tomcat:打成 jar 包直接 java -jar 启动,运维小哥看了直呼专业
  • 生态无敌:连 Redis、MySQL、Kafka 都有 starter,一行依赖搞定集成

而且重点来了:它对前端极其友好!RESTful API 返回 JSON?默认就支持。CORS 跨域?加个注解就行。不像某些框架还要手动序列化,前端同事再也不用在群里疯狂 at 我问“你这接口返回的是字符串还是对象?”


60分钟实操:从零到部署

第一步:环境准备(5分钟)

确保你装了:

  • JDK 17(别用 8 了,新项目直接上 17+)
  • Maven 或 Gradle(我个人偏爱 Gradle,构建快)
  • 一个趁手的 IDE(IntelliJ IDEA 社区版就够用)
# 验证一下
java -version
mvn -v

🙋‍♂️ 吐槽时间:上次有个外包客户非要用 Eclipse,我差点当场辞职。Mac 上 IDEA 的快捷键肌肉记忆救我狗命。

第二步:创建项目(10分钟)

打开 start.spring.io,这是 Spring 官方脚手架,比自己搭快十倍。

我一般选这些:

  • Project: Gradle Project
  • Language: Java
  • Spring Boot: 3.2.x(最新稳定版)
  • Dependencies: Spring Web, Spring Data JPA, H2 Database(开发用内存数据库,省事)

点击 Generate,下载 zip 解压,用 IDEA 打开——恭喜,你的项目骨架有了!

目录结构长这样:

src/
├── main/
│   ├── java/com/example/demo/
│   │   └── DemoApplication.java  ← 启动类
│   └── resources/
│       ├── application.properties ← 配置文件
│       └── static/              ← 放前端静态资源(虽然我们通常前后端分离)

第三步:写个 Hello World 接口(15分钟)

com.example.demo 下新建 controller 包,创建 HelloController.java

@RestController // 这个注解 = @Controller + @ResponseBody,直接返回 JSON
@RequestMapping("/api")
public class HelloController {

    @GetMapping("/hello")
    public Map<String, Object> sayHello() {
        Map<String, Object> resp = new HashMap<>();
        resp.put("message", "Hello, Spring Boot!");
        resp.put("timestamp", System.currentTimeMillis());
        return resp;
    }
}

启动 DemoApplication,浏览器访问 http://localhost:8080/api/hello,看到 JSON 输出就算成功!

💡 小技巧:开发时加个 spring-boot-devtools 依赖,代码改完自动重启,省去手动 stop/start 的烦恼。

第四步:连数据库,搞个 CRUD(20分钟)

外包项目哪能没有用户管理?来个简单的 User 表。

  1. 建实体类entity/User.java):
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private String name;
    private String email;
    
    // getter/setter 省略,实际可用 Lombok
}
  1. 写 Repositoryrepository/UserRepository.java):
public interface UserRepository extends JpaRepository<User, Long> {
    // Spring Data JPA 自动实现 CRUD,不用写 SQL!
}
  1. 写 Service 和 Controller(略,核心逻辑在 Controller):
@PostMapping("/users")
public User createUser(@RequestBody User user) {
    return userRepository.save(user);
}

@GetMapping("/users/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
    return userRepository.findById(id)
        .map(user -> ResponseEntity.ok().body(user))
        .orElse(ResponseEntity.notFound().build());
}
  1. 配置 H2 数据库application.properties):
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.jpa.hibernate.ddl-auto=create-drop

⚠️ 注意:ddl-auto=create-drop 只用于开发!生产环境必须用 validatenone,配合 Flyway 做数据库迁移,不然哪天删库跑路就真成梗了。

第五步:打包 & 部署(10分钟)

执行:

./gradlew bootJar

生成的 jar 在 build/libs/demo-0.0.1-SNAPSHOT.jar

扔到服务器上:

nohup java -jar demo-0.0.1-SNAPSHOT.jar > app.log 2>&1 &

🛠️ 运维经验:一定要加 nohup 和日志重定向!否则 SSH 断开进程就挂了。另外建议用 systemd 或 Docker 管理,别学我早年直接 & 后台跑,半夜报警都不知道是哪个进程崩了。


性能与架构思考:别只顾跑起来

作为搞过 Go 和 Python 的人,我一开始觉得 Java 启动慢、内存大。但 Spring Boot 3 + GraalVM 原生镜像已经能大幅改善。不过对于普通外包项目,其实没必要折腾。

更关键的是接口设计数据库优化

问题 解决方案
N+1 查询 @EntityGraph 或 DTO 投影
接口太重 按需返回字段,避免前端拿到一堆没用的数据
日志混乱 统一用 SLF4J + MDC,方便链路追踪

还有,千万别在 Controller 里写业务逻辑!我见过实习生直接在接口里查三次数据库拼数据,线上 QPS 一高就 CPU 100%。分层架构不是形式主义,是保命符。


最后:为什么我不转全职 Java?

说实话,经过这几个 Spring Boot 外包项目,我对它的印象改观很大。启动快、生态全、文档齐,特别适合快速交付型项目。但让我放弃 Go 和 Python?不可能。

  • Go 适合高并发微服务,写起来简洁,编译快,部署无依赖
  • Python 适合数据分析、脚本自动化,胶水语言名不虚传
  • Spring Boot 则是企业级应用的“稳妥之选”,尤其当客户说“我们要用 Oracle”时……

所以我的策略很明确:用最适合的工具解决最匹配的问题。Spring Boot 是我工具箱里重要的一把锤子,但不是唯一的锤子。


写在最后

60 分钟可能有点赶,但足够让你跑通一个可演示的项目。真正的难点在于理解 Spring 的核心思想:IoC(控制反转)和 AOP(面向切面)。不过外包嘛,先跑起来再说,原理可以边干边补。

如果你也在接外包,被逼着学新技术,别慌。我去年双11还在用 Python 写爬虫,现在也能淡定地写 JPA Repository。程序员的核心能力不是记住语法,而是快速学习 + 快速交付

对了,这篇文章写完,我得赶紧去改那个明天上线的接口了……产品经理又在群里催了:“哥哥,求求了!” 😅


附:常用命令速查

# 创建项目(命令行版)
curl https://start.spring.io/starter.zip -d dependencies=web,data-jpa,h2 -d type=gradle-project -o demo.zip

# 查看应用是否启动
lsof -i :8080

# 打包跳过测试
./gradlew bootJar -x test

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝