Spring Boot入门教程:60分钟快速上手
上周五凌晨1点,我刚把娃哄睡(对,又是“哄睡失败-崩溃-再哄-终于睡了”的经典剧情),突然想起明天要给实习生做技术分享——讲Spring Boot快速入门。脑子里瞬间弹出三个字:完蛋了。
作为一个边带两岁半娃、边在后端组肝分布式系统的全职妈妈,我的时间管理技能已经进化到“碎片化生存”级别。早上8点娃还没醒,我就得抓紧写代码;白天开会时一边听着产品经理画大饼,一边在Notion里偷偷记Bug;晚上等娃睡了,还得抽空复习面试题,毕竟这行卷得要命,谁也不敢保证能稳坐钓鱼台。
所以,今天这篇《Spring Boot 60分钟上手》,不是那种“Hello World完事”的水文,而是我从两年实战+无数次线上翻车+被运维追着骂的经历中提炼出来的真实速成指南。无论你是想跳槽刷面试题、还是被领导临时抓壮丁写个后端服务,这篇都能帮你快速开干。
为啥是Spring Boot?Go不行吗?
先说个题外话:最近组里有个新来的同事疯狂安利Go,说“Go写Web快如闪电,部署简单,内存占用低”,还顺手甩给我几个Gin框架的Demo。我承认,Go确实香,尤其在高并发场景下表现优异。但现实是——我们老项目全是Java栈,数据库连的是Oracle,中间件用的是Kafka + Redis + MySQL那一套。这时候你让我重写?产品经理怕是要连夜提刀来我家。
而且,现在大多数互联网公司的后端岗位,尤其是中大型企业,Spring Boot依然是主流。你看招聘JD就知道:“熟练掌握Spring Boot、MyBatis、Redis……” 几乎成了标配。所以,哪怕你心仪Go,也得先把Spring Boot拿下——毕竟,活下去才能谈理想。
60分钟能干啥?目标明确才不浪费时间
别幻想60分钟就能成为Spring Boot大神。我们的目标很务实:
- 能创建一个可运行的RESTful API服务
- 连上数据库,实现增删改查(CRUD)
- 理解核心配置和常见注解
- 知道怎么打成Jar包部署到测试环境
搞定这些,你就能应付大部分初级面试题,也能接住临时派下来的“小需求”(比如给前端提供个用户信息接口)。
第一步:搭环境,别在第一步就卡死
我见过太多新人卡在Maven下载依赖慢、JDK版本不对、IDEA插件没装……所以,先确认:
- JDK 17(推荐,LTS版本)
- Maven 3.8+
- IDEA(IntelliJ IDEA Community就行)
然后打开 start.spring.io,这是Spring官方脚手架,比手动配pom.xml省心一百倍。
我一般选这些:
- Project: Maven
- Language: Java
- Spring Boot: 3.x(最新稳定版)
- Dependencies: Spring Web, Spring Data JPA, MySQL Driver, Lombok
💡 小贴士:Lombok能让你少写getter/setter,省下的时间够我多陪娃玩五分钟了!
生成项目后导入IDEA,等Maven下载完依赖(趁这时间去冲杯咖啡,或者捡起地上娃扔的积木),项目结构应该长这样:
src
└── main
├── java
│ └── com.example.demo
│ └── DemoApplication.java
└── resources
├── application.properties
└── ...
第二步:写个API,让前端能调你
新建一个Controller:
@RestController
@RequestMapping("/api/users")
public class UserController {
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
// 暂时返回假数据
User user = new User(id, "张三", "zhangsan@example.com");
return ResponseEntity.ok(user);
}
}
再建个User实体类(加Lombok注解):
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Long id;
private String name;
private String email;
}
启动DemoApplication,浏览器访问 http://localhost:8080/api/users/123,看到JSON输出就说明通了!
🤯 真实场景:去年双11前,我写了个库存查询接口,忘了加
@RestController,结果返回的是字符串而不是JSON,前端直接炸了。当时真的想砸电脑。
第三步:连数据库,别再用假数据糊弄人
编辑 application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/demo_db?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
然后把User改成JPA实体:
@Entity
@Table(name = "users")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
}
再建个Repository:
public interface UserRepository extends JpaRepository<User, Long> {
}
最后在Controller里注入:
@Autowired
private UserRepository userRepository;
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
return userRepository.findById(id)
.map(user -> ResponseEntity.ok(user))
.orElse(ResponseEntity.notFound().build());
}
现在,你的接口是真的从数据库读数据了!记得提前建好demo_db和users表。
第四步:打包部署,别只在本地跑
在项目根目录执行:
./mvnw clean package
生成的Jar在 target/demo-0.0.1-SNAPSHOT.jar。上传到测试服务器,运行:
java -jar demo-0.0.1-SNAPSHOT.jar --server.port=8081
🔧 运维经验:生产环境千万别用内嵌Tomcat跑高流量服务!但我们这种内部工具或低频接口,完全够用。另外,记得加
--spring.profiles.active=prod切换配置。
面试题高频考点(附赠)
很多面试官会问:
Spring Boot自动配置原理?
→ 简单说:@EnableAutoConfiguration会扫描META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports里的配置类,按条件加载Bean。Starter是什么?
→ 就是一堆依赖的“套餐”,比如spring-boot-starter-web自动引入Tomcat、Spring MVC等。如何自定义Starter?
→ 写过一次,但实际工作中几乎用不到……除非你在做基础架构。
总结:60分钟够不够?
说实话,如果你有Java基础,60分钟绝对能跑通一个完整的小服务。我上周就是用这个流程,带实习生半天就上线了一个配置管理接口。
当然,真正的难点不在“跑起来”,而在“跑稳”。比如:
- 怎么做全局异常处理?
- 接口要不要加缓存?
- 分页怎么设计?
- 日志怎么追踪链路?
这些,才是后端开发的深水区。但没关系,先跑起来,再优化——这是我这两年带娃+写代码悟出的最大真理。娃不会因为你没读完育儿书就不哭,系统也不会因为你没学完分布式理论就不崩。行动,永远比完美主义重要。
最后,如果你也在带娃写代码的路上,欢迎留言交流。说不定下次分享,我就写《如何在娃拆家时调试分布式事务》——那场面,比CAP理论还难搞 😅

评论 0