60分钟搞懂Spring Boot,打工人的时间都该这么省
凌晨一点半,我合上Rust的书,看了一眼公司IM里产品经理刚发来的“这个需求很简单”的消息,叹了口气。三年了,从校招生熬成老油条,每天在CRUD和会议中反复横跳。最近动了跳槽的心思——不是对现在这家公司有意见(好吧其实有点),而是觉得再不学点新东西,简历都快写不出第三行了。
但问题是:时间真的不够用啊!
早上八点打卡,晚上九点下班是常态;双休?不存在的,能休单休就谢天谢地了。在这种996福报加持下,想系统学个框架?做梦。所以当我上周被临时抓壮丁,要给新人做个“Spring Boot快速入门”分享时,我第一反应是:“你让我讲啥?我自己都是边查文档边写的!”
但转念一想——正因为没时间,才更要高效学习。 所以我花了周末仅有的几个小时(还得抽空回老家看猫),把Spring Boot最核心、最实用的部分拎出来,整理成这篇“60分钟上手指南”。不讲花里胡哨的理论,只讲你明天上班就能用上的东西。
为什么又是Java?因为老板说“稳”
先别急着吐槽Java老、慢、啰嗦。现实很骨感:我们后端70%的服务还是Java写的,尤其是Spring Boot搭的。为啥?稳定、生态全、招人容易——这三点在老板眼里比什么“语言先进性”重要多了。
上周五,运维小哥半夜打电话说一个Go服务挂了,日志看不懂,监控也抓瞎。最后还是靠隔壁Java组的老哥帮忙捞日志、看线程栈。那一刻我悟了:技术选型从来不是纯技术问题,而是组织能力问题。
所以,哪怕你心里想着Rust、Go、Node.js,只要还在这家厂子干,Spring Boot就是绕不开的坎。
Spring Boot到底是什么?一句话说清
很多人第一次听Spring Boot,脑子里冒出一堆问号:Spring、Spring MVC、Spring Boot、Spring Cloud……这是套娃吗?
简单说:
- Spring 是一个“胶水”框架,帮你管理对象、依赖、事务。
- Spring MVC 是Spring的一部分,专门处理Web请求(比如HTTP接口)。
- Spring Boot 就是“开箱即用版Spring”——它帮你自动配好数据库连接、Web服务器、JSON解析等等,让你专注写业务逻辑,而不是调配置。
就像你买台新电脑,不用自己装操作系统、驱动、办公软件——开机就能干活。
动手!60分钟实战流程(附避坑指南)
第一步:环境准备(5分钟)
你需要:
- JDK 8 或 11(别用17,很多老项目不兼容)
- 一个趁手的IDE(IntelliJ IDEA 强推,Eclipse就算了)
- Maven 或 Gradle(推荐Maven,国内网络友好)
血泪教训:千万别在公司开发机上装新JDK!上次我偷偷升级到JDK17,结果CI流水线跑不过,被测试组追着问了三天。
第二步:创建项目(3分钟)
最简单的方式:去 https://start.spring.io(官方脚手架)
填几个关键信息:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.x(最新稳定版)
- Group: com.yourcompany(换成你公司的包名)
- Artifact: demo-service
- Dependencies: 勾选 Spring Web, Spring Data JPA, H2 Database(内存数据库,方便本地测试)
点“Generate”,下载zip包,解压导入IDEA。
这个网站本质是个代码生成器,背后对应的是GitHub上的spring-initializr项目。如果你团队有规范,完全可以自己搭一个内部脚手架。
第三步:写个Hello World接口(10分钟)
打开DemoServiceApplication.java同目录,新建一个controller包,创建文件:
package com.yourcompany.demoservice.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, 996打工人!";
}
}
启动DemoServiceApplication主类,浏览器访问 http://localhost:8080/hello,看到那句熟悉的问候,恭喜你——Spring Boot已经跑起来了!
关键注解解释:
@RestController=@Controller+@ResponseBody,表示这个类里的方法直接返回JSON或文本,不用走页面模板。@GetMapping就是处理GET请求,还有@PostMapping等对应其他HTTP方法。
第四步:连数据库,写个CRUD(20分钟)
光会说“Hello”没用,得能读写数据。我们用JPA + H2(内存数据库,无需安装)。
1. 配置数据源(application.properties)
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.show-sql=true
ddl-auto=create-drop 表示每次启动重建表,适合开发;生产环境必须改成validate或none!
2. 定义实体类
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
// getter/setter 略(IDEA可自动生成)
}
3. 写Repository接口
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByName(String name);
}
JPA的魔力在于:你只需要定义接口,Spring Data会自动生成实现! 比如上面的findByName,会自动翻译成SELECT * FROM user WHERE name = ?。
4. 在Controller里调用
@GetMapping("/users")
public List<User> getUsers() {
return userRepository.findAll();
}
@PostMapping("/users")
public User createUser(@RequestBody User user) {
return userRepository.save(user);
}
用Postman或curl测试一下,能增删查改,说明数据库通了!
第五步:打包部署(10分钟)
本地跑通只是开始,得能上线。
在项目根目录执行:
./mvnw clean package
生成target/demo-service-0.0.1-SNAPSHOT.jar
这个jar是可执行的!直接运行:
java -jar target/demo-service-0.0.1-SNAPSHOT.jar
注意:生产环境一定要加JVM参数,比如
-Xms512m -Xmx2g -XX:+UseG1GC,不然内存溢出分分钟教你做人。
第六步:常见坑 & 生产经验(12分钟)
坑1:端口冲突
默认8080,但公司内网可能被占。改application.properties:
server.port=8081
坑2:跨域问题(前端联调时必现)
加个全局配置:
@Configuration
public class CorsConfig {
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowedOrigins(Arrays.asList("*"));
config.setAllowedMethods(Arrays.asList("*"));
config.setAllowedHeaders(Arrays.asList("*"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
return source;
}
}
坑3:日志没输出
Spring Boot默认用Logback,但日志级别是INFO。调试时改成DEBUG:
logging.level.com.yourcompany=DEBUG
生产建议:
| 事项 | 开发环境 | 生产环境 |
|---|---|---|
| 数据库 | H2(内存) | MySQL/PostgreSQL |
| 日志级别 | DEBUG | WARN/ERROR |
| 端口 | 任意 | 固定(如8080) |
| Actuator | 开启 | 只暴露必要端点(如health) |
另外,一定要加Actuator健康检查!运维靠这个判断服务是否存活:
management.endpoints.web.exposure.include=health,info
访问 /actuator/health 返回 {"status":"UP"},K8s才能正确管理你的Pod。
写在最后:工具链才是生产力
说实话,Spring Boot本身并不难,难的是整个工具链的协同:Git + GitHub管理代码,Maven构建,Docker打包,K8s部署,Prometheus监控……
上周我们组上线一个新服务,就因为没配好/actuator/health,K8s以为服务挂了,疯狂重启,导致用户请求失败。最后排查两小时,改一行配置搞定。这种事故,99%都出在“周边工具”上,而不是业务代码。
所以我的建议是:
- 先用Spring Initializr生成标准项目结构
- 所有配置通过
application-{env}.properties区分环境 - 把GitHub Actions或Jenkins流水线跑起来,做到“提交即部署”
- 监控和日志尽早接入,别等线上炸了才后悔
结语:时间挤一挤,总归有的
写这篇文章的时候,已经是周日凌晨两点。明天还要早起review PR,但心里莫名踏实——因为我知道,哪怕只有60分钟,只要聚焦核心,也能掌握一个框架的骨架。
Rust我还在啃,但Spring Boot这套“老伙计”,依然是我在职场安身立命的基本盘。技术人不能只追新,也要守稳。
如果你也是被deadline追着跑的打工人,希望这篇“极简上手指南”能帮你省下几个小时。毕竟,在福报厂里,每一分钟都珍贵。
项目代码已上传GitHub:github.com/yourname/springboot-quickstart(记得替换成你的真实地址)
别忘了点个Star,下次跳槽简历上又能多一行“开源贡献” 😏

评论 0