Spring 是什么
轻量级开源框架,核心是 IOC 和 AOP,用于简化 Java 开发。
Spring 的核心
IOC 控制反转 和 AOP 面向切面
- DI(依赖注入)是 IOC 的具体实现
- AOP 默认对接口用 JDK 动态代理(基于接口反射),对类用 CGLIB 动态代理(基于子类字节码生成)
- AOP 核心思想:分离业务逻辑与横切关注点,提高代码复用性和可维护性
Spring 框架的主要模块
- 核心模块:Spring Core(IOC 容器)、Spring Context(上下文,扩展 Core)、Spring AOP(切面编程)。
- 其他模块:Spring JDBC(数据库操作)、Spring Transaction(事务管理)、Spring Web(Web 支持)、Spring MVC(MVC 框架)、Spring Test(测试支持)。
Spring Bean 的生命周期
- 实例化(new 对象)→ 属性赋值(DI)→ 初始化(InitializingBean、@PostConstruct)→ 使用 → 销毁(DisposableBean、@PreDestroy)
- 关键节点:BeanFactoryPostProcessor(实例化前修改 Bean 定义)、BeanPostProcessor(初始化前后增强)。
Bean 的作用域
- singleton(单例,默认)、prototype(多例,每次getBean都是新的实例)、request(Web 中,一次请求一个)、session(Web 中,一个会话一个)。
- 单例 vs 多例:singleton 容器中只有一个实例,线程不安全需注意;prototype 每次获取都新建实例。
SpringBoot
Spring Boot 是 “约定优于配置” 的快速开发框架
Spring 事务的隔离级别
隔离级别:DEFAULT(默认,继承数据库)、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE。 默认值:MySQL 中默认 REPEATABLE_READ,Oracle 中默认 READ_COMMITTED。
Spring 事务的传播机制
核心传播机制:REQUIRED(默认,当前无事务则新建,有则加入)、REQUIRES_NEW(无论是否有事务,都新建独立事务)、SUPPORTS(有事务则加入,无则非事务执行)。
Spring 事务的实现方式
- 声明式事务(推荐):@Transactional 注解(基于 AOP),配置简单。
- 编程式事务:通过 TransactionTemplate 手动控制事务,灵活性高但代码侵入性强。
Spring Web
Spring Web 提供 Web 应用基础能力;Spring MVC 利用这些能力实现 MVC 模式的 Web 框架
Spring MVC
Spring Web 的子模块,一个基于 MVC 模式的 Web 框架; 核心是 DispatcherServlet,负责请求分发,是前端控制器。
Spring Boot Actuator
作用:提供应用监控和管理功能(如健康状态、内存使用、请求统计等)。 常用端点(需在配置中暴露,如management.endpoints.web.exposure.include=*): /actuator/health:应用健康状态。 /actuator/info:应用信息(如版本、描述)。 /actuator/metrics:性能指标(如 JVM 内存、请求数)。 /actuator/env:环境变量和配置信息。 /actuator/shutdown:关闭应用(需开启management.endpoint.shutdown.enabled=true)。
