写点什么

BATJ 互联网公司必问知识点:Spring 十个面试专题及答案 (1)

作者:Java高工P7
  • 2021 年 11 月 09 日
  • 本文字数:1958 字

    阅读完需:约 6 分钟

在 Java 中依然注入有以下三种实现方式:


  1. 构造器注入

  2. Setter 方法注入

  3. 接口注入

二、请解释下 Spring 框架中的 IoC?

Spring 中的 org.springframework.beans 包和 org.springframework.context 包构成了 Spring 框架 IoC 容器的基础。


BeanFactory 接口提供了一个先进的配置机制,使得任何类型的对象的配置成为可能。


ApplicationContex 接口BeanFactory(是一个子接口)进行了扩展,在 BeanFactory的基础上添加了其他功能,比如与 Spring 的 AOP 更容易集成,也提供了处理 message resource的机制(用于国际化)、事件传播以及应用层的特别配置,比如针对 Web 应用的 WebApplicationContext


org.springframework.beans.factory.BeanFactorySpring IoC 容器的具体实现,用来包装和管理前面提到的各种 bean。BeanFactory 接口Spring IoC 容器的核心接口。


IOC:把对象的创建、初始化、销毁交给 spring 来管理,而不是由开发者控制,实现控制反转

三、BeanFactory 和 ApplicationContext 有什么区别?

BeanFactory 可以理解为含有 bean 集合的工厂类BeanFactory 包含了种 bean 的定义,以便在接收到客户端请求时将对应的 bean 实例化。


BeanFactory 还能在实例化对象的时生成协作类之间的关系。此举将 bean 自身与 bean 客户端的配置中解放出来。BeanFactory 还包含 了 bean 生命周期的控制,调用客户端的初始化方法initialization methods)和销毁方法destruction methods)。


从表面上看,application context 如同 bean factory 一样具有 bean 定义、bean 关联关系的设置,根据请求分发 bean 的功能。但 applicationcontext 在此基础上还提供了其他的功能。


  1. 提供了支持国际化的文本消息

  2. 统一的资源文件读取方式

  3. 已在监听器中注册的 bean 的事件


以下是三种较常见的 ApplicationContext 实现方式:


  1. ClassPathXmlApplicationContext:从 classpathXML 配置文件中读取上下文,并生成上下文定义。应用程序上下文从程序环境变量中


ApplicationContext context = new ClassPathXmlApplicationContext(“bean.xml”);


  1. FileSystemXmlApplicationContext :由文件系统中的 XML 配置文件读取上下文。


ApplicationContext context = new FileSystemXmlApplicationContext(“bean.xml”);


  1. XmlWebApplicationContext:由 Web 应用的 XML 文件读取上下文。

  2. AnnotationConfigApplicationContext(基于 Java 配置启动容器)



本文仅供参考!文章内容节选自《Spring 面试专题及答案》需要的同学记得私信我免费获取!

四、Spring 有几种配置方式?

将 Spring 配置到应用开发中有以下三种方式:


  1. 基于 XML 的配置

  2. 基于注解的配置

  3. 基于 Java 的配置

五、请解释 Spring Bean 的生命周期?

Spring Bean 的生命周期简单易懂。在一个 bean 实例被初始化时,需要执行一系列的初始化操作以达到可用的状态。同样的,当一个 bean 不在被调用时需要进行相关的析构操作,并从 bean 容器中移除。


Spring bean factory 负责管理在 spring 容器中被创建的 bean 的生命周期。Bean 的生命周期由两组回调(call back)方法组成。


  1. 初始化之后调用的回调方法

  2. 销毁之前调用的回调方法


Spring 框架提供了以下四种方式来管理 bean 的生命周期事件:


  • InitializingBeanDisposableBean 回调接口

  • 针对特殊行为的其他 Aware 接口

  • Bean 配置文件中的 Custom init()方法和 destroy()方法

  • @PostConstruct@PreDestroy 注解方式


使用 customInit()customDestroy()方法管理 bean 生命周期的代码样例如下:


<beans><bean id="demoBean" class="com.somnus.task.DemoBean" initmethod="customInit" destroy-method="customDestroy"></bean></beans>

六、什么是 Spring inner beans?

在 Spring 框架中,无论何时 bean 被使用时,当仅被调用了一个属性。一个明智的做法是将这个 bean 声明为内部 bean。内部 bean 可以用 setter 注入“属性”和构造方法注入“构造参数”的方式来实现。


比如,在我们的应用程序中,一个 Customer 类引用了一个 Person 类,我们的要做的是创建一个 Person 的实例,然后在 Customer 内部使用。


public class Customer{private Person person;//Setters and Getters}


public class Person{private String name;private String address;private int age;//Setters and Getters}


内部 bean 的声明方式如下:


七、请举例说明如何在 Spring 中注入一个 Java Collection?

Spring 提供了以下四种集合类的配置元素:


  • <list> : 该标签用来装配可重复的 list 值。

  • <set> : 该标签用来装配没有重复的 set 值。

  • <map>: 该标签可用来注入键和值可以为任何类型的键值对。

  • <props> : 该标签支持注入键和值都是字符串类型的键值对。


下面看一下具体的例子:


<be


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
BATJ互联网公司必问知识点:Spring十个面试专题及答案(1)