🌱 一、Spring 框架核心概念
✅ 1. Spring 是什么?
- 开源 Java 框架,专注基础架构,提升开发效率
- 核心特性:IoC、DI、AOP、事务管理
- 社区活跃,企业广泛使用
✅ 2. IoC 与 DI
- IoC(控制反转) :对象的创建交给 Spring 容器
- DI(依赖注入) :容器自动注入依赖对象
三种方式:构造器注入、Setter注入、字段注入
🧬 二、Spring Bean 相关
✅ 3. Bean 生命周期(6步)
- 容器启动
- 实例化 Bean
- 依赖注入
- 调用 init 方法(如 PostConstruct)
- Bean 就绪,可使用
- 容器销毁时,执行 destroy 方法(如 PreDestroy)
✅ 4. Bean 作用域(Scope)
- singleton(默认,整个容器一个实例)
- prototype(每次注入都新建)
- request/session/application/websocket(Web 环境)
🔧 三、自动装配方式
✅ 5. 自动装配方式(3种)
@Autowired:按类型注入,可配合@Qualifier@Resource:按名称注入,找不到则按类型@Inject:功能与@Autowired类似,来自 JSR-330
📐 四、常用设计模式(4个)
- 工厂模式:BeanFactory、ApplicationContext
- 单例模式:默认 Bean 单例
- 代理模式:AOP 实现机制
- 观察者模式:事件发布机制(事件监听)
🌀 五、AOP 核心概念(6个关键词)
- 目标对象:原始业务逻辑类
- 切面(Aspect) :增强逻辑的模块
- 切入点(Pointcut) :哪些方法需要增强
- 通知(Advice) :增强逻辑(前置、后置等)
- 织入(Weaving) :将切面插入目标类
- 代理(Proxy) :增强后的代理类对象
💼 六、事务管理
✅ 6. 两种方式
- 编程式:手动控制事务,更灵活
- 声明式:常用,使用
@Transactional注解控制
✅ 7. @Transactional 常用属性
- propagation:事务传播行为
- isolation:事务隔离级别
- timeout:超时时间
- rollbackFor:指定异常回滚
- noRollbackFor:指定异常不回滚
🔄 七、事务传播行为(7种)
- REQUIRED(默认):有事务加入,无则新建
- REQUIRES_NEW:总是新建事务
- SUPPORTS:有事务则加入,无则无事务
- NOT_SUPPORTED:有事务挂起,无则继续
- MANDATORY:必须有事务
- NEVER:有事务就抛异常
- NESTED:嵌套事务,有保存点
🚧 八、事务隔离级别(5种)
解决并发问题:脏读、不可重复读、幻读
- READ_UNCOMMITTED:可能脏读,最差
- READ_COMMITTED:防止脏读
- REPEATABLE_READ:防止脏读+不可重复读
- SERIALIZABLE:防止所有问题,最安全最慢
- DEFAULT:使用数据库默认(MySQL是 repeatable_read)
⚠️ 九、事务失效常见原因(6种)
- 方法内部调用自己
- 注解加在 private 方法上
- 异常被捕获未抛出
- 非运行时异常未配置回滚
- 嵌套事务,主事务回滚时子事务不影响
- 异步执行场景(@Async)事务无法感知
🌐 十、Spring MVC 核心
✅ 1. 什么是 Spring MVC?
- 构建 Web 应用的框架,基于 MVC 架构
- 与 Spring 框架无缝集成
✅ 2. MVC 三层职责
- Model:处理业务逻辑和数据
- View:展示数据
- Controller:接收请求并调用业务逻辑
🔁 十一、Spring MVC 请求流程(7步)
- 用户发起请求
- DispatcherServlet 接收请求
- HandlerMapping 匹配 Controller
- HandlerAdapter 调用 Controller
- Controller 返回 ModelAndView
- ViewResolver 解析视图
- 响应用户
🛡️ 十二、拦截器(Interceptor)
-
类似 Filter,但贴近 Spring MVC
-
实现 HandlerInterceptor 接口
-
生命周期三阶段:
- preHandle(请求前)
- postHandle(控制器后,视图前)
- afterCompletion(请求完成)