写点什么

BATJ 互联网公司必问知识点:Spring 十个面试专题及答案,java 技术面试总结评语

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

    阅读完需:约 6 分钟

以下是三种较常见的 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


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


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> : 该标签支持注入键和值都是字符串类型的键值对。


下面看一下具体的例子:


</bean></beans>

八、请解释自动装配模式的区别?

在 Spring 框架中共有 5 种自动装配,让我们逐一分析。


  1. no:这是 Spring 框架的默认设置,在该设置下自动装配是关闭的,开发者需要自行在 bean 定义中用标签明确的设置依赖关系。

  2. byName:该选项可以根据 bean 名称设置依赖关系。当向一个 bean 中自动装配一个属性时,容器将根据 bean 的名称自动在在配置文件中查询一个匹配的 bean。如果找到的话,就装配这个属性,如果没找到的话就报错。

  3. byType:该选项可以根据 bean 类型设置依赖关系。当向一个 bean 中自动装配一个属性时,容器将根据 bean 的类型自动在在配置文件中查询一个匹配的 bean。如果找到的话,就装配这个属性,如果没找到的话就报错。

  4. constructor:造器的自动装配和 byType 模式类似,但是仅仅适用于与有构造器相同参数的 bean,如果在容器中没有找到与构造器参数类型一致的 bean,那么将会抛出异常。

  5. autodetect:该模式自动探测使用构造器自动装配或者 byType 自动装配。首先,首先会尝试找合适的带参数的构造器,如果找到的话就是用构造器自动装配,如果在 bean 内部没有找到相应的构造器或者是无参构造器,容器就会自动选择 byTpe 的自动装配方式。

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
BATJ互联网公司必问知识点:Spring十个面试专题及答案,java技术面试总结评语