03 Spring / Spring Boot
这一块在面试里是干什么的
主要看你:
- 是否真正做过 Java 后端
- 是否理解 Spring 不是“会用注解”那么简单
- 是否具备基本框架认知
Spring 核心先记两个
- IOC:控制反转
- AOP:面向切面编程
什么是 IOC
传统写法里,对象由程序员自己 new。
Spring 里,对象交给容器统一创建和管理,这就是 IOC。
一句话:
“对象不再由我手动管理,而是交给 Spring 容器管理。”
什么是 DI
DI 是依赖注入,是 IOC 的实现方式之一。
比如一个 service 依赖 dao,Spring 自动把 dao 注入进去。
什么是 Bean
被 Spring 容器管理的对象就叫 Bean。
Bean 的作用域
最常见:
singleton:单例,默认prototype:多例
面试一般先会说默认单例即可。
AOP 是干什么的
把和业务无关但很多地方都要做的功能抽出来统一处理。
典型场景:
- 日志
- 权限
- 事务
- 监控
一句话:
“AOP 让公共逻辑和业务逻辑解耦。”
Spring Bean 生命周期
短期先记主干:
- 实例化
- 属性注入
- 初始化
- 使用
- 销毁
@Autowired 和 @Resource
零基础先这样记:
@Autowired:Spring 常用,默认按类型注入@Resource:更偏 JDK 标准,常按名称注入
Spring Boot 为什么流行
因为它做了很多自动配置,减少样板代码,开箱即用。
一句话:
“Spring Boot 是为了更快搭项目,不是替代 Spring。”
自动配置原理先记大意
Spring Boot 根据类路径、配置文件、条件注解,自动帮你装配 Bean。
不要一开始死背源码。
常见注解
@Component@Service@Repository@Controller@RestController@Configuration@Bean
高频题:
@Controller 和 @RestController
@Controller:通常返回页面@RestController:通常返回 JSON
事务是什么
事务是一组操作,要么都成功,要么都失败。
事务四大特性:
- 原子性
- 一致性
- 隔离性
- 持久性
Spring 事务常见高频题
@Transactional 为什么会失效
常见原因:
- 方法不是
public - 自调用
- 异常被吞掉
- 没有被 Spring 管理
什么是事务传播行为
调用一个方法时,如果它本身也有事务配置,Spring 要决定它加入旧事务还是新开事务。
最常见只先记:
REQUIRED:默认,有事务就加入,没有就新建REQUIRES_NEW:总是新开事务
Spring MVC 流程
先记最简版:
- 请求进入
DispatcherServlet - 找到对应 Controller 方法
- 执行方法
- 返回结果并响应给前端
过滤器、拦截器、AOP 区别
面试很爱问。
- Filter:Servlet 层,最靠前
- Interceptor:Spring MVC 层
- AOP:面向方法切面
一句话:
“Filter 处理请求入口,Interceptor 处理控制器调用前后,AOP 处理方法级公共逻辑。”
Spring Boot 启动流程怎么答
不要一上来背源码。
可先说:
“本质上就是启动 Spring 容器,做组件扫描、自动配置、创建 Bean,最后启动内嵌 Web 容器对外提供服务。”
高频快答
BeanFactory 和 ApplicationContext
BeanFactory:更基础ApplicationContext:更常用,功能更完整
为什么 Spring 默认单例
节省资源,便于统一管理,大多数无状态 Bean 也适合单例。
循环依赖一定能解决吗
不是所有情况都能,常见单例 + setter 注入场景 Spring 能处理,构造器循环依赖通常不行。
这一章最小记忆包
- IOC 是对象交给容器管理
- DI 是 IOC 的实现方式
- AOP 用于抽离公共逻辑
- Spring Boot 靠自动配置提升开发效率
- 事务重点记 ACID、传播行为、失效场景
- Filter、Interceptor、AOP 要会区分