请写一篇关于【Spring Boot入门教程:60分钟快速上手】的技术文章
作者:一个在天通苑租房、相亲N次终于脱单的北京程序员
去年十月,一个周四晚上,窗外下着小雨,我坐在天通苑13号楼那张吱呀作响的二手电脑椅上,左手泡面桶还没扔,右手正疯狂敲键盘。那会儿刚被HR通知“技术面挂了”,原因是“Spring Boot基础太薄弱”。我盯着屏幕里那个空荡荡的@SpringBootApplication注解,心里一阵发苦——房租3500,存款不到两万,相亲对象上周刚说“你这工作不稳定,还是算了吧”。
说实话,那一刻我真的有点想放弃。
但第二天早上七点,我还是爬起来打开IDEA,给自己定了个目标:用60分钟,搞懂Spring Boot到底是个啥。不是为了装X,也不是为了面试官嘴里的“你对微服务有了解吗?”,而是因为我真的需要一份稳定的工作——至少得让我付得起下季度房租,还得让新认识的那个姑娘觉得“这人还行,能养家”。
今天,我就把那天的笔记整理出来,写成这篇《Spring Boot入门教程:60分钟快速上手》。不灌鸡汤,不堆概念,就讲清楚三件事:怎么跑起来?核心机制是啥?面试常问哪些题?
顺便提一句,现在我已经入职一家做供应链SaaS的小公司,月薪从15k涨到了22k。上个月刚和那位姑娘领证了。她说:“你写代码的样子,其实还挺帅的。”(虽然我知道她是在安慰我)
第一阶段(0-15分钟):别纠结原理,先让它跑起来!
很多新手(包括曾经的我)一上来就想搞懂“自动装配”、“Starter机制”、“内嵌Tomcat原理”……结果连项目都建不起来,直接劝退。
Stop!先跑起来再说。
步骤1:去官网生成项目骨架
打开 https://start.spring.io,选:
- Project: Maven
- Language: Java
- Spring Boot: 3.2.x(最新稳定版)
- Group: com.yourname(比如 com.liang)
- Artifact: demo-springboot
- Dependencies: 勾选 Spring Web
点击“Generate”,下载zip包,解压后用IDEA打开。
📌 真实场景:那天我用的是公司淘汰下来的MacBook Air,风扇狂转。但神奇的是,Spring Initializr生成的pom.xml居然没报错——这在我以前用Maven手动配依赖时简直不敢想。
步骤2:写个最简单的Controller
在 src/main/java/com/liang 下新建 HelloController.java:
@RestController
public class HelloAssistant {
@GetMapping("/hello")
public String sayHello() {
return "Hello, 我终于脱单了!";
}
}
注意:类名我故意写成HelloAssistant(致敬你),方法返回字符串带中文——因为我知道有些新人会被编码问题坑到怀疑人生。
步骤3:启动主类
找到自动生成的 DemoSpringbootApplication.java,右键 → Run。
如果看到控制台输出:
Tomcat initialized with port(s): 8080 (http)
...
Started DemoSpringbootApplication in 2.345 seconds
恭喜!你的第一个Spring Boot应用跑起来了。
浏览器访问 http://localhost:8080/hello,看到那句“我终于脱单了!”,那一刻我差点哭出来——不是感动,是终于不用再背锅“连环境都搭不好”。
第二阶段(16-35分钟):理解三个核心注解
Spring Boot之所以快,是因为它把Spring那一套复杂的XML配置全自动化了。而这一切,靠的是三个魔法注解。
1. @SpringBootApplication —— 项目的“总开关”
点进去看源码,你会发现它其实是三个注解的组合:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
@SpringBootConfiguration:标记这是个配置类(本质是@Configuration)@ComponentScan:自动扫描当前包及子包下的@Component、@Service等Bean@EnableAutoConfiguration:最关键! 它会根据classpath里的依赖,自动配置Bean
举个栗子🌰:你加了spring-boot-starter-web,它就自动给你配好DispatcherServlet、Jackson、内嵌Tomcat……不用你写一行XML。
💡 面试题预警:
Q:@SpringBootApplication 的作用是什么?
A:它是Spring Boot应用的入口注解,集成了配置、组件扫描和自动装配三大功能,通过条件装配机制根据classpath依赖自动配置所需Bean。
2. @RestController —— 写API的标配
它 = @Controller + @ResponseBody。
意思就是:这个类里的所有方法返回值,直接写入HTTP响应体(而不是跳转页面)。
所以你返回字符串,浏览器就显示字符串;返回Java对象,它自动转成JSON(因为starter-web默认引入了Jackson)。
3. @Autowired vs 构造器注入
老派写法:
@Service
public class UserService {
@Autowired
private UserRepository repo;
}
但Spring官方现在强烈推荐构造器注入:
@Service
public class UserService {
private final UserRepository repo;
public UserService(UserRepository repo) {
this.repo = repo;
}
}
为什么?两点:
- 不可变性:final字段不能被意外修改
- 单元测试友好:不用反射,直接new就行
🗣️ 真实吐槽:我上家公司有个“架构师”,非说字段注入更简洁。结果单元测试写得像蜘蛛网,每次改代码都怕崩。后来他跳槽去了某大厂——做外包。
第三阶段(36-50分钟):配置文件与Profile实战
Spring Boot的配置哲学是:约定优于配置。但它也留了后门——application.properties(或.yaml)。
配置数据库连接(以H2为例)
先加依赖:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
然后在 application.properties 写:
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.h2.console.enabled=true
启动后访问 http://localhost:8080/h2-console,就能看到内存数据库界面。
多环境配置:dev / test / prod
创建:
application-dev.propertiesapplication-prod.properties
在主配置中指定激活哪个:
spring.profiles.active=dev
或者启动时传参:
java -jar demo.jar --spring.profiles.active=prod
💡 面试题预警:
Q:如何实现多环境配置?
A:通过application-{profile}.properties文件配合spring.profiles.active属性激活指定环境配置,也可通过命令行参数或环境变量动态指定。
第四阶段(51-60分钟):常见面试题速记
最后10分钟,背几个高频题,保命用。
Q1:Spring Boot 和 Spring 有什么区别?
- Spring:是一个庞大的生态(IoC、AOP、Data、Security…),但配置繁琐。
- Spring Boot:是Spring的脚手架,通过Starter和自动配置,简化开发、快速启动、内嵌服务器,真正做到“开箱即用”。
Q2:什么是Starter?举例说明。
Starter是一组预定义的依赖集合,帮你一键引入相关技术栈。
比如:
spring-boot-starter-web→ Web开发(含Tomcat + Spring MVC + Jackson)spring-boot-starter-data-jpa→ JPA + Hibernatespring-boot-starter-test→ 测试全家桶(JUnit, Mockito, AssertJ…)
Q3:Spring Boot如何实现自动配置?
核心是 @EnableAutoConfiguration + spring.factories 文件。
Spring Boot启动时会扫描所有jar包下的 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports(Spring Boot 2.7+后替代了旧的spring.factories),加载符合条件的自动配置类。
每个自动配置类都有 @ConditionalOnClass、@ConditionalOnMissingBean 等条件注解,确保只在需要时生效。
✅ 记住这句话:“存在才配置,缺失才创建”。
尾声:技术是手段,生活才是目的
写到这里,已经是凌晨一点。老婆在隔壁房间睡着了(对,我现在敢说“老婆”了)。窗外天通苑的路灯还亮着,远处五号线末班车刚刚驶过。
回想那晚泡面+失败面试的绝望,再对比今天能安稳写代码、周末陪她逛超市的日子,我突然明白一件事:
技术从来不是终点,而是通往更好生活的船票。
Spring Boot也好,Go也罢(最近公司在用Go重构部分服务,我也在学),它们只是工具。真正重要的是:你是否愿意在低谷时,给自己60分钟,从最简单的“Hello World”开始重建信心。
如果你正在准备面试,焦虑得睡不着——别慌。把这篇教程跑一遍,理解那三个注解,背熟那几道题。然后深吸一口气,走进会议室。
说不定,下一个脱单的,就是你。
P.S. 有人问我为什么不直接学Go?我说:Spring Boot在国内企业级市场还是主流,尤其金融、政务、传统行业。而且——先拿offer,再谈理想。等你月薪30k+,想学Rust都行。
P.P.S. 这篇文章花了我三个晚上写完,期间老婆给我煮了两次面。她说:“你写代码的样子,其实还挺帅的。”
这次,我相信了。

评论 0