Spring面试精华:25个经典问题深度解析

需积分: 9 5 下载量 187 浏览量 更新于2024-07-21 3 收藏 143KB DOC 举报
Spring框架是一个强大的轻量级开源框架,主要用于简化企业级Java应用的开发和管理。它由多个主要模块组成,包括: 1. **IoC容器**:实现了依赖注入(DI)的核心功能,负责管理对象的生命周期和创建过程,允许组件之间的松耦合。 2. **AOP(面向切面编程)**:提供声明式事务管理、日志、安全等功能,通过切点表达式实现代码复用。 3. **Bean工厂**:BeanFactory是Spring早期版本中的核心接口,负责创建和管理Bean。ApplicationContext是其后续版本,增加了更多的功能,如国际化、事件发布等。 4. **配置方式**: - **基于XML**:传统的配置方式,通过XML配置文件定义Bean的属性和依赖关系。 - **基于Java配置**:使用Java代码编写配置,提供更灵活的元数据注入,减少XML文件的复杂性。 5. **注解配置**:利用Spring提供的注解(如@Autowired、@Component、@Service等)简化配置,提高代码可读性和维护性。 SpringBean的生命周期通常包括以下几个阶段: - **创建**:通过IoC容器实例化Bean。 - **初始化**:调用Bean的构造函数或初始化方法设置属性。 - **使用**:Bean作为应用组件参与业务逻辑。 - **销毁**:Spring容器在适当的时候(如应用结束)调用Bean的destory方法进行清理。 Bean的范围有以下几种: - **Singleton**:全局单例,只有一个实例。 - **Prototype**:每次请求都会创建新的实例。 - **Request**:每个HTTP请求一个实例。 - **Session**:每个HTTP会话一个实例。 Spring的嵌入Bean是指那些在Spring容器外部创建但通过Spring进行管理的Bean。 Spring框架中的单例bean默认是非线程安全的,但在使用`@Scope("prototype")`或通过`Singletons`工厂模式时,可以使其线程安全。 Spring支持多种类型的数据注入,例如: - 注入Java集合类:通过构造函数或setter方法传入预填充的集合实例。 - 注入Properties:使用`@Autowired`配合`@Qualifier`或`@Value`注解指定特定的配置源。 Spring的Bean自动生成原理涉及自动装配机制,根据注解信息和依赖关系来实例化Bean。 Spring的模块还包括: - **Web MVC**:用于处理HTTP请求的控制器、视图和模型绑定。 - **Data Access/ORM**:与数据库交互的支持,如JPA、Hibernate等。 - **Message Broker**:消息中间件支持,如Spring AMQP。 - **WebSocket**:处理实时通信的模块。 - **Security**:提供身份验证、授权和访问控制功能。 设计模式在Spring中广泛应用,如工厂模式、单例模式、依赖倒置原则(依赖注入)、观察者模式(事件发布/订阅)、策略模式(AOP切面)等,这些都是Spring设计思想的重要体现。最后,`FileSystemResource`和`ClassPathResource`都是Spring的资源定位器,前者查找的是文件系统中的资源,后者查找的是类路径下的资源,它们在处理应用资源访问时有所不同。