Spring常见面试题总结

时间:2024-10-27 12:26:32

一、Spring基础理解

  1. Spring是什么

    • Spring是一个轻量级的Java EE框架,旨在简化企业级应用开发,并提供IoC容器、AOP和数据访问等核心功能。
    • Spring的核心思想是控制反转(IoC)和面向切面编程(AOP)。
  2. Spring的框架组成

    • Spring框架由多个模块组成,包括Spring Core、Spring Context、Spring AOP、Spring DAO、Spring JDBC、Spring Transaction、Spring Web等。
    • 每个模块解决特定的问题,并保持松耦合,开发者可以根据需要选择使用。
  3. Spring的核心优势

    • 提供了全面的基础设施支持,涉及依赖注入、事务管理、AOP、数据访问、Web开发表现和安全性等方面。
    • 通过IoC容器和AOP模块,有效地降低了组件之间的耦合度,使得开发过程更加简单和直观。

二、IoC与AOP

  1. IoC(控制反转)

    • IoC是一种设计原则,用于实现低耦合。它将创建对象的控制权转移给Spring框架进行管理。
    • 在Spring中,对象的依赖关系由Spring容器管理,而不是由对象自己创建或查找。
    • IoC容器负责创建Bean对象并管理Bean的生命周期,以及根据Bean之间的依赖关系完成Bean之间的注入。
  2. AOP(面向切面编程)

    • AOP是一种编程范式,它允许开发者将横切关注点(如日志记录、事务管理、权限检查等)从业务逻辑中分离出来。
    • Spring AOP通过动态代理实现AOP功能,包括切面(Aspect)、连接点(Join point)、通知(Advice)和切入点(Pointcut)等概念。

三、Spring MVC与Web开发

  1. Spring MVC

    • Spring MVC是基于模型-视图-控制器(MVC)设计模式的Web框架,用于构建Web应用程序。
    • 它将业务逻辑、视图和请求处理分离,提高了代码的可维护性。
    • 常用的注解包括@Controller、@RequestMapping、@GetMapping、@PostMapping等。
  2. Spring Web模块

    • 提供了基于Servlet的Web应用开发支持,包括Spring MVC和WebSocket等。

四、Spring Data与ORM

  1. Spring Data

    • Spring Data是Spring项目的一部分,为数据访问提供统一的Repository接口层。
    • 它简化了与数据存储技术(如关系数据库、NoSQL数据库)的集成。
  2. ORM(对象关系映射)

    • Spring提供了对ORM框架的支持,如Hibernate、JPA等。
    • 通过Spring Data JPA等,可以轻松实现与关系数据库的交互。

五、Spring事务管理

  1. 事务管理

    • 事务管理是指通过编程和声明性方式,控制事务的提交和回滚,确保数据的一致性和完整性。
    • Spring提供了声明式事务管理和编程式事务管理两种方式。
  2. 声明式事务管理

    • 允许开发者通过简单的配置就能管理事务,而不需要编写复杂的事务代码。
    • 常用的注解包括@Transactional等。

六、Spring的其他特性

  1. Spring Security

    • Spring Security是一个能够为基于Spring的应用程序提供声明式的安全访问控制解决方案的安全框架。
  2. Spring Boot

    • Spring Boot是一个简化Spring应用开发的框架,它允许以最少的配置快速启动和部署Spring应用程序。
  3. Spring Cloud

    • Spring Cloud是基于Spring Boot的一系列框架,用于快速开发分布式系统,包括配置管理、服务发现、断路器等。

七、Spring的优缺点与应用场景

  1. 优点

    • 方便解耦,简化开发。
    • 提供AOP编程的支持。
    • 提供声明式事务的支持。
    • 方便程序的测试。
    • 方便集成各种优秀框架。
    • 降低JavaEE API的使用难度。
  2. 缺点

    • 学习曲线较陡峭。
    • 依赖于反射等机制,可能会对性能产生一定的影响。
    • 随着应用的复杂性增加,配置也变得更加复杂和难以管理。
  3. 应用场景

    • 企业级应用开发。
    • Web应用开发。
    • 集成解决方案。
    • 微服务架构。
    • 大数据应用。
    • 移动应用后端。

Spring 基础

一、Spring概述

Spring是一个开源的、轻量级的、基础架构型的Java开发框架,旨在为企业级应用开发提供全面的基础架构支持,同时简化Java开发过程。Spring以控制反转(IoC)和面向切面编程(AOP)为核心,提供了丰富的功能和模块,包括依赖注入(DI)、事务管理、数据访问、Web开发等。

二、Spring体系结构

Spring框架由多个模块组成,每个模块都解决了特定的问题,并保持松耦合。开发者可以根据需要选择使用相应的模块。Spring的主要模块包括:

  • Spring Core:核心模块,提供了框架的基本功能,包括依赖注入、类型转换、资源管理等。
  • Spring Context:上下文模块,扩展了核心模块的功能,提供了对国际化、事件传播、资源加载等功能的支持。
  • Spring AOP:面向切面编程模块,提供了对横切关注点的支持,如日志记录、事务管理等。
  • Spring DAO:数据访问模块,提供了对JDBC、ORM框架等的支持。
  • Spring JDBC:提供了对JDBC的抽象和简化,使得数据库操作更加便捷。
  • Spring ORM:对ORM框架的支持,如Hibernate、JPA等。
  • Spring Web:Web模块,提供了对Servlet、WebSocket等Web技术的支持。
  • Spring MVC:基于MVC设计模式的Web框架,用于构建Web应用程序。

三、Spring核心特性

  1. 控制反转(IoC)

    • IoC是Spring框架的核心特性之一,用于实现松耦合。它将对象的创建权和控制权交给Spring容器,由Spring容器负责创建和管理对象。
    • 通过依赖注入(DI),Spring容器可以在运行时将对象所需的依赖注入到对象中,从而降低了对象之间的耦合度,提高了代码的可维护性和可测试性。
  2. 面向切面编程(AOP)

    • AOP是一种编程范式,它允许开发者将横切关注点(如日志记录、安全检查等)从业务逻辑中分离出来,形成所谓的“切面”。
    • 这些切面可以在运行时动态地应用到其他对象的指定连接点上,从而实现了对业务逻辑的增强。
    • Spring AOP通过动态代理技术实现了AOP功能,为开发者提供了灵活的横切关注点管理方式。
  3. 容器功能

    • Spring是一个容器,因为它包含并管理应用对象的生命周期。Spring容器使用ConcurrentHashMap集合存储了BeanDefinition对象,该对象封装了Spring对一个bean所有配置信息。
    • 根据配置好的配置文件或注解,Spring容器可以创建和管理bean对象,并根据bean之间的依赖关系完成bean之间的注入。

四、Spring基本用法

  1. 配置Spring容器

    • Spring容器可以通过XML文件或Java配置类进行配置。在XML文件中,可以使用<bean>标签来定义bean对象及其依赖关系;在Java配置类中,可以使用@Configuration、@Bean等注解来定义配置类和bean对象。
  2. 依赖注入(DI)

    • 依赖注入是Spring框架的核心功能之一,它可以通过多种方式实现:
      • 构造器注入:在创建对象时通过构造器参数传入依赖对象。
      • Setter方法注入:通过setter方法将依赖对象注入到对象中。
      • 接口注入:通过实现特定接口的方法将依赖对象注入到对象中(Spring不直接支持,但可以通过AOP等技术实现)。
  3. 使用Spring MVC

    • Spring MVC是一个基于MVC设计模式的Web框架,它提供了对Web应用程序的全面支持。使用Spring MVC可以轻松地构建Web应用程序,并实现视图层、控制层和模型层之间的分离。

五、Spring应用场景

Spring框架广泛应用于企业级应用开发、Web应用开发、集成解决方案、微服务架构等领域。通过提供全面的基础设施支持和丰富的功能模块,Spring框架为开发者提供了高效、灵活、可扩展的开发环境。

Spring 包含的模块有哪些?

Spring4.x 版本

Spring5.x 版本

Spring5.x 版本中 Web 模块的 Portlet 组件已经被废弃掉,同时增加了用于异步响应式处理的 WebFlux 组件。

Spring 各个模块的依赖关系如下:

Core Container

Core Container(核心容器)是Spring框架的基础,包含了多个关键模块,这些模块共同提供了依赖注入(DI)、控制反转(IoC)等核心功能。以下是Core Container的详细介绍:

一、Core Container的组成

Core Container主要由以下四个模块组成:

  1. Core模块
    • 包含Spring框架基本的核心工具类。
    • 提供了Spring框架的基本功能,如Bean的创建、配置和管理等。
  2. Beans模块
    • 包含了访问配置文件、创建和管理Bean以及进行IoC/DI操作相关的所有类。
    • 是Spring框架中用于管理Bean生命周期的核心模块。
  3. Context模块
    • 继承了Beans模块的特性,并提供了大量扩展。
    • 追加了对国际化、事件传播、资源加载和对Context的透明创建等功能的支持。
    • 提供了一个运行时的环境,使得Bean可以在其中被定义、配置和组装。
  4. Expression Language模块
    • 提供了一个强大的表达式语言用于在运行时查询和操作对象。
    • 允许开发者在配置文件中使用表达式来动态地获取Bean的属性或调用Bean的方法。

二、Core Container的核心功能

  1. 依赖注入(DI)
    • Core Container通过DI机制,将对象之间的依赖关系从代码中分离出来,交由Spring容器来管理。
    • 开发者可以通过配置文件或注解来定义Bean之间的依赖关系,Spring容器会在运行时自动地将这些依赖关系注入到Bean中。
  2. 控制反转(IoC)
    • IoC是Spring框架的核心思想之一,它允许开发者将对象的创建权和控制权交给Spring容器。
    • 通过IoC,开发者可以更加灵活地管理对象之间的依赖关系,降低了对象之间的耦合度,提高了代码的可维护性和可测试性。
  3. Bean管理
    • Core Container提供了对Bean的完整生命周期管理,包括Bean的创建、初始化、使用和销毁等。
    • 开发者可以通过配置文件或注解来定义Bean的属性、作用域、生命周期回调方法等。
  4. 国际化
    • Context模块提供了对国际化的支持,使得开发者可以轻松地实现应用程序的多语言版本。
  5. 事件传播
    • Context模块还提供了事件传播机制,允许开发者在应用程序中定义和发布事件,以及监听和处理这些事件。

三、Core Container的应用场景

Core Container作为Spring框架的基础,广泛应用于企业级应用开发、Web应用开发、集成解决方案等领域。通过提供全面的基础设施支持和丰富的功能模块,Core Container为开发者提供了高效、灵活、可扩展的开发环境。