Java EE Spring 核心知识点总结
·
1. Spring 框架概述
- 定义:一个开源的 Java EE 轻量级框架,旨在简化企业级应用开发。
- 核心特性:
- IOC (Inversion of Control):控制反转,将对象创建和依赖关系的管理交给 Spring 容器。
- AOP (Aspect-Oriented Programming):面向切面编程,将横切关注点(如日志、事务、安全)与业务逻辑分离。
- 声明式事务:通过配置而非代码硬编码来管理事务。
- 集成能力:轻松集成 MyBatis, Hibernate, Quartz, Redis 等第三方框架。
2. 核心容器 (Core Container)
2.1 IOC (控制反转) 与 DI (依赖注入)
- 概念:
- IOC:对象不再主动创建依赖对象,而是由外部容器注入。
- DI:实现 IOC 的具体手段,包括 Setter 注入、构造器注入、字段注入(@Autowired)。
- BeanFactory vs ApplicationContext:
BeanFactory:基础容器,延迟加载,资源占用少。ApplicationContext:企业级容器,启动时预加载单例 Bean,支持国际化、事件传播等高级功能。
- Bean 的作用域 (Scope):
singleton(默认):单例,整个容器只有一个实例。prototype:多例,每次请求创建一个新实例。request/session/application:Web 环境下的作用域。
2.2 Bean 的生命周期
- 实例化 (Instantiation):Spring 容器创建 Bean 的实例。
- 属性赋值 (Populate):注入依赖属性。
- 初始化前处理 (BeanPostProcessor.before):执行前置处理器。
- 初始化 (Initialization):
- 执行
@PostConstruct注解方法。 - 执行
InitializingBean.afterPropertiesSet()方法。 - 执行自定义
init-method。
- 执行
- 初始化后处理 (BeanPostProcessor.after):执行后置处理器(AOP 代理通常在此步骤生成)。
- 使用 (In Use):Bean 就绪,可供应用程序使用。
- 销毁 (Destruction):
- 容器关闭时,执行
@PreDestroy。 - 执行
DisposableBean.destroy()。 - 执行自定义
destroy-method。
- 容器关闭时,执行
3. AOP (面向切面编程)
- 核心概念:
- 切面 (Aspect):横切关注点的模块化(如事务管理器)。
- 连接点 (Joinpoint):程序执行过程中的任意点(通常是方法执行)。
- 通知 (Advice):切面在特定连接点执行的动作。
@Before:前置通知。@After:后置通知(无论是否异常)。@AfterReturning:返回通知。@AfterThrowing:异常通知。@Around:环绕通知(最强大,可控制执行流程)。
- 切入点 (Pointcut):匹配连接点的表达式(如
execution(* com.service.*.*(..)))。 - 织入 (Weaving):将切面应用到目标对象的过程(Spring 默认使用动态代理)。
- 实现原理:
- JDK 动态代理:针对实现了接口的类。
- CGLIB 代理:针对未实现接口的类(生成子类)。
4. Spring MVC (Web 层框架)
- 核心流程:
- 用户发送请求至 DispatcherServlet (前端控制器)。
- DispatcherServlet 查询 HandlerMapping,找到对应的 Handler (Controller)。
- DispatcherServlet 调用 HandlerAdapter 执行 Handler。
- Handler 执行完毕返回 ModelAndView。
- DispatcherServlet 将 ModelAndView 传给 ViewResolver 解析视图。
- DispatcherServlet 渲染视图并响应给用户。
- 常用注解:
@Controller/@RestController:标记控制器。@RequestMapping/@GetMapping/@PostMapping:映射 URL。@RequestParam:获取查询参数。@PathVariable:获取路径变量。@RequestBody:接收 JSON 数据并转换为对象。@ResponseBody:返回 JSON 数据。
5. 事务管理 (Transaction Management)
- 编程式事务:使用
TransactionTemplate或PlatformTransactionManager手动控制(代码侵入性强,少用)。 - 声明式事务 (推荐):
- 基于注解:
@Transactional。- 可配置属性:
propagation(传播行为),isolation(隔离级别),rollbackFor(回滚规则),timeout(超时时间)。
- 可配置属性:
- 基于 XML:通过
<tx:advice>和<aop:config>配置。
- 基于注解:
- 事务传播行为 (Propagation):
REQUIRED(默认):如果当前有事务则加入,否则新建。REQUIRES_NEW:挂起当前事务,新建一个事务。NESTED:嵌套事务。SUPPORTS,NOT_SUPPORTED,MANDATORY,NEVER等。
- 失效场景:
- 方法非
public。 - 同类方法内部调用(自调用),绕过了代理对象。
- 异常被
try-catch捕获且未抛出。 - 数据库引擎不支持事务(如 MyISAM)。
- 方法非
6. Spring Boot (现代化开发基石)
- 核心理念:约定优于配置 (Convention over Configuration)。
- 主要特性:
- 自动配置 (Auto Configuration):根据 classpath 下的依赖自动配置 Bean(如引入
spring-boot-starter-web自动配置 Tomcat 和 Spring MVC)。 - 起步依赖 (Starters):简化 Maven/Gradle 依赖管理。
- 内嵌容器:内置 Tomcat/Jetty/Undertow,无需部署 WAR 包,直接运行 JAR。
- Actuator:提供监控和管理端点(健康检查、指标监控)。
- 配置文件:支持
application.properties和application.yml,支持多环境配置 (profile)。
- 自动配置 (Auto Configuration):根据 classpath 下的依赖自动配置 Bean(如引入
7. 常见设计模式在 Spring 中的应用
- 工厂模式:
BeanFactory,ApplicationContext创建 Bean。 - 单例模式:Spring 中的 Bean 默认为单例。
- 代理模式:AOP 实现的核心。
- 模板方法模式:
JdbcTemplate,RestTemplate等。 - 观察者模式:Spring 的事件驱动模型 (
ApplicationEvent,ApplicationListener)。 - 适配器模式:Spring MVC 中的
HandlerAdapter。 - 策略模式:不同的资源访问策略 (
Resource接口实现类)。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)