Java面试深度解析:Spring框架核心概念与设计模式

2 下载量 93 浏览量 更新于2024-08-03 收藏 1.08MB PDF 举报
"这篇博客详细介绍了Spring框架的相关面试知识点,包括Spring的优点与缺点,核心容器模块,两大核心概念——IOC和AOP,以及相关的技术细节。" 在Java面试中,Spring框架是一个重要的考察点,因为它在企业级应用开发中扮演着关键角色。以下是Spring框架的一些关键知识点: 1. **Spring 介绍** Spring是一个轻量级的框架,它通过IOC(控制反转)和AOP(面向切面编程)来简化应用开发。Spring框架由多个模块组成,例如SpringContext提供Bean的访问和企业级功能,SpringCore提供IOC和DI服务,SpringAOP支持AOP,SpringWeb则针对Web应用提供了集成特性。 2. **Spring 的优点** - 轻量级:Spring自身占用资源少,对应用侵入性小。 - 依赖注入(DI):通过IOC容器管理对象的依赖关系,使代码更加松耦合。 - 面向切面编程(AOP):允许在不修改原有代码的情况下添加新功能,提高代码复用性。 - 支持多种数据访问技术,如JDBC、ORM框架(Hibernate、MyBatis)。 - 提供事务管理,支持声明式事务处理。 3. **Spring 的缺点** - 学习曲线较陡峭,尤其是AOP和高级特性。 - 过度依赖Spring可能导致项目过于复杂,增加维护难度。 - 对于小型项目,引入Spring可能显得过度设计。 4. **核心容器(Spring Context)** Spring Context是Spring的核心,它提供了一个框架,用于存储、管理和协调应用程序的组件。它作为全局的Bean工厂,管理Bean的创建、初始化、销毁。 5. **Spring 的两大核心概念** - IOC(控制反转):将对象的创建和管理交给容器,而不是由对象自己控制。 - AOP(面向切面编程):允许定义横切关注点,如日志、事务管理,然后在多个方法或类中统一应用。 6. **Spring AOP 常用名词** - 切点(Pointcut):定义关注点何时触发。 - 通知(Advice):在切点匹配时执行的动作。 - 织入(Weaving):将切点和通知组合到目标对象的过程。 7. **Spring 容器的启动流程** - 加载配置文件,解析Bean定义。 - 创建Bean实例。 - 实施依赖注入。 - 调用初始化方法。 8. **Spring Bean的生命周期** 包括初始化、活跃期(正常服务)和销毁三个阶段,可通过回调方法、@PostConstruct和@PreDestroy注解进行控制。 9. **Spring Bean的作用域** - 单例(Singleton):应用中只有一个Bean实例。 - 多例(Prototype):每次请求都会创建一个新的Bean实例。 - 会话(Session)和请求(Request):在Web应用中,分别对应一次会话或一次HTTP请求。 10. **Spring 基于XML注入Bean的方式** - `bean`标签定义Bean,通过`property`标签注入属性。 - 使用`ref`属性引用其他Bean。 - `constructor-arg`标签用于构造函数注入。 11. **Spring 如何解决循环依赖问题** - 基于静态早期绑定(Eager Singleton):预创建Bean,但可能导致内存浪费。 - 基于动态晚期绑定(Lazy Singleton):按需创建,通过三级缓存实现循环依赖的解