面试 Java 框架八股文十问十答第六期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!
⭐点赞⭐收藏⭐不迷路!⭐
1)看过源码吗?说下 Spring 由哪些重要的模块组成?
Spring 由许多重要的模块组成,其中一些包括:
- Spring Core Container:这是 Spring 框架的核心部分,包括核心容器和依赖注入功能。它包括
BeanFactory
接口和ApplicationContext
接口等关键组件。 - Spring AOP:AOP(Aspect-Oriented Programming)模块允许你使用切面来将横切关注点从主要业务逻辑中分离出来。它通过在运行时动态地将功能横切到应用程序中的对象上来实现这一点。
- Spring JDBC:这个模块提供了一个 JDBC 抽象层,使得在使用 JDBC 时更加简单,同时也提供了对声明式事务管理的支持。
- Spring ORM:这个模块为了方便在 Spring 应用程序中使用对象关系映射(ORM)框架,如 Hibernate、JPA 等提供了集成支持。
- Spring MVC:Spring MVC 是一个基于 MVC 模式的 Web 框架,它提供了一个灵活的方式来开发 Web 应用程序。
- Spring Security:Spring Security 提供了对应用程序的身份验证和授权的支持,帮助你保护你的应用程序免受各种安全威胁。
这些只是 Spring 框架中一些重要的模块,还有很多其他的模块,可以根据具体的应用需求来选择使用。
2)什么是 IOC?
IOC(Inversion of Control,控制反转)是一种软件设计原则,它将对象的创建和管理权利从应用程序代码转移到了外部容器中。在传统的编程模型中,应用程序类通常会负责自己的依赖项的创建和管理,而在 IOC 容器中,这些依赖项的创建和管理由容器来完成。这意味着应用程序类不再负责创建它们所依赖的对象,而是通过外部容器来注入它们。
3)IOC 有什么好处?
IOC 的好处包括:
- 松耦合:IOC 通过将对象之间的依赖关系转移到外部容器来实现松耦合。对象不再直接依赖于其他对象的具体实现,而是依赖于它们的接口或抽象。这使得对象更容易被替换、重用和测试。
- 可维护性:IOC 使得代码更加清晰和易于维护。通过将依赖关系集中管理,可以更容易地理解和修改代码。
- 可测试性:IOC 使得代码更容易进行单元测试。由于依赖关系被外部容器管理,测试时可以轻松地模拟这些依赖项,从而更容易编写单元测试。
- 更好的封装性:IOC 使得对象之间的依赖关系更好地封装在外部容器中。对象只需要关注自己的功能,而不需要关心它们的依赖关系是如何管理的。
4)什么是 DI?
DI(Dependency Injection,依赖注入)是一种实现 IOC 的方式,它是通过外部容器来注入一个对象的依赖关系,而不是在对象内部创建或查找依赖关系。简而言之,DI 就是将对象所需的依赖关系注入到对象中,而不是由对象自己创建或管理这些依赖关系。
5)什么是 Bean?
在 Spring 中,Bean 是指由 Spring 容器管理的对象。这些对象通常被称为 Spring Bean。Spring 容器负责创建、装配和管理这些 Bean。Bean 可以是任何普通的 Java 对象,但通常被设计成可以通过 Spring 的依赖注入机制来管理。
6)BeanFactory 什么用?
BeanFactory 是 Spring 框架中的一个核心接口,它是 Spring IoC 容器的基础接口之一。BeanFactory 负责管理应用程序中的 Bean,包括实例化 Bean、装配 Bean 以及管理 Bean 的生命周期。BeanFactory 接口定义了获取 Bean 的各种方法,包括根据名称、类型等。它提供了一种松散耦合的机制,使得应用程序可以通过接口而不是直接依赖具体实现来访问和管理 Bean。
7)FactoryBean 又是啥?
FactoryBean 是 Spring 框架中的一个接口,用于创建复杂的 Bean 实例。通常情况下,Bean 是通过构造函数或工厂方法来创建的,而 FactoryBean 则允许你在创建 Bean 实例时进行更复杂的逻辑处理。实现 FactoryBean 接口的类必须实现 getObject()
方法,该方法用于返回由 FactoryBean 创建的 Bean 实例。FactoryBean 可以用于创建任何类型的 Bean,包括简单的对象、集合、代理对象等。
8)ObjectFactory 又是啥?
ObjectFactory 是 Spring 框架中的一个接口,它是一个用于创建对象的工厂。与 FactoryBean 不同,ObjectFactory 不会创建复杂的 Bean 实例,而是简单地创建给定类型的对象。它只有一个方法 getObject()
,用于返回创建的对象实例。ObjectFactory 主要用于在运行时动态地获取对象实例,而不需要在编码时指定具体的类。
9)ApplicationContext 呢?
ApplicationContext 是 Spring 框架中的一个接口,它是 Spring IoC 容器的高级接口之一。ApplicationContext 是 BeanFactory 接口的子接口,提供了更丰富的功能和更方便的使用方式。与 BeanFactory 不同,ApplicationContext 在加载配置文件时就会立即实例化所有的 Bean,并在容器启动时就完成 Bean 的初始化和装配工作。除了 BeanFactory 的基本功能外,ApplicationContext 还提供了事件发布、国际化支持、资源加载、应用程序上下文层次结构等功能。
10)Bean 一共有几种作用域?
Spring 中的 Bean 一共有五种作用域:
- singleton:单例作用域,每个 Spring 容器中只存在一个 Bean 实例。
- prototype:原型作用域,每次请求都会创建一个新的 Bean 实例。
- request:请求作用域,每个 HTTP 请求都会创建一个新的 Bean 实例。
- session:会话作用域,每个 HTTP 会话都会创建一个新的 Bean 实例。
- application:全局作用域,整个 Web 应用程序生命周期内只存在一个 Bean 实例。
这些作用域可以通过在 Bean 的声明中使用 @Scope
注解或在 XML 配置文件中使用 <bean>
元素的 scope
属性来指定。
开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system
前后端总计已经 1300+ Star,2W+ 访问!
⭐点赞⭐收藏⭐不迷路!⭐