互联网Java工程师面试题·Spring篇·第六弹

news2024/11/26 7:28:10

目录

​编辑

21.什么是 Spring beans?

22、一个 Spring Bean 定义 包含什么?

23、如何给 Spring 容器提供配置元数据?

24、你怎样定义类的作用域?

25、解释 Spring 支持的几种 bean 的作用域。

26、Spring 框架中的单例 bean 是线程安全的吗?

27、解释 Spring 框架中 bean 的生命周期。

28、哪些是重要的 bean 生命周期方法?你能重载它们吗?

29、什么是 Spring 的内部 bean?

30、在 Spring 中如何注入一个 java 集合?

31、什么是 bean 装配?

32、什么是 bean 的自动装配?

33、解释不同方式的自动装配 。

34.自动装配有哪些局限性 ?

35、你可以在 Spring 中注入一个 null 和一个空字符串吗?


21.什么是 Spring beans?

        Spring beans 是那些形成 Spring 应用的主干的 java 对象。它们被 Spring IOC容器初始化,装配,和管理。这些 beans 通过容器中配置的元数据创建。比如,以 XML 文件中 的形式定义。

        Spring 框架定义的 beans 都是单件 beans。在 bean tag 中有个属性”singleton”,如果它被赋为 TRUE,bean 就是单件,否则就是一个 prototype bean。默认是 TRUE,所以所有在 Spring 框架中的 beans 缺省都是单件。


22、一个 Spring Bean 定义 包含什么?

        一个 Spring Bean 的定义包含容器必知的所有配置元数据,包括如何创建一个bean,它的生命周期详情及它的依赖。


23、如何给 Spring 容器提供配置元数据?

这里有三种重要的方法给 Spring 容器提供配置元数据。

XML 配置文件。

基于注解的配置。

基于 java 的配置。


24、你怎样定义类的作用域?

        当定义一个 在 Spring 里,我们还能给这个 bean 声明一个作用域。它可以通过bean 定义中的 scope 属性来定义。如,当 Spring 要在需要的时候每次生产一个新的 bean 实例,bean 的 scope 属性被指定为 prototype。另一方面,一个 bean每次使用的时候必须返回同一个实例,这个 bean 的 scope 属性 必须设为singleton。


25、解释 Spring 支持的几种 bean 的作用域。

Spring 框架支持以下五种 bean 的作用域:

singleton : bean 在每个 Spring ioc 容器中只有一个实例。

prototype:一个 bean 的定义可以有多个实例。

request:每次 http 请求都会创建一个 bean,该作用域仅在基于 web的 Spring ApplicationContext 情形下有效。

session:在一个 HTTP Session 中,一个 bean 定义对应一个实例。该作用域仅在基于 web 的 Spring ApplicationContext 情形下有效。

global-session:在一个全局的 HTTP Session 中,一个 bean 定义对应一个实例。该作用域仅在基于 web 的 Spring ApplicationContext 情形下有效。

缺省的 Spring bean 的作用域是 Singleton.


26、Spring 框架中的单例 bean 是线程安全的吗?

不,Spring 框架中的单例 bean 不是线程安全的。


27、解释 Spring 框架中 bean 的生命周期。

(1)Spring 容器 从 XML 文件中读取 bean 的定义,并实例化 bean。

(2)Spring 根据 bean 的定义填充所有的属性。

(3)如果 bean 实现了 BeanNameAware 接口,Spring 传递 bean 的 ID 到setBeanName 方法。

(4)如果 Bean 实现了 BeanFactoryAware 接口, Spring 传递beanfactory 给 setBeanFactory 方法。

(5)如果有任何与 bean 相关联的 BeanPostProcessors,Spring 会在postProcesserBeforeInitialization()方法内调用它们。

(6)如果 bean 实现 IntializingBean 了,调用它的 afterPropertySet 方法,

(7)如果 bean 声明了初始化方法,调用此初始化方法。

(8)如果有 BeanPostProcessors 和 bean 关联,这些 bean 的postProcessAfterInitialization() 方法将被调用。

(9)如果 bean 实现了 DisposableBean,它将调用 destroy()方法。


28、哪些是重要的 bean 生命周期方法?你能重载它们吗?

        有两个重要的 bean 生命周期方法,第一个是 setup , 它是在容器加载 bean的时候被调用。第二个方法是 teardown 它是在容器卸载类的时候被调用。

        The bean 标签有两个重要的属性(init-method 和 destroy-method)。用它们你可以自己定制初始化和注销方法。它们也有相应的注解(@PostConstruct 和@PreDestroy)。


29、什么是 Spring 的内部 bean?

        当一个 bean 仅被用作另一个 bean 的属性时,它能被声明为一个内部 bean,为了定义 inner bean,在 Spring 的 基于 XML 的 配置元数据中,可以在 或元素内使用 元素,内部 bean 通常是匿名的,它们的 Scope 一般是 prototype。


30、在 Spring 中如何注入一个 java 集合?

Spring 提供以下几种集合的配置元素:

(1)类型用于注入一列值,允许有相同的值。

(2)类型用于注入一组值,不允许有相同的值。

(3)类型用于注入一组键值对,键和值都可以为任意类型。

(4)类型用于注入一组键值对,键和值都只能为 String 类型。


31、什么是 bean 装配?

        装配,或 bean 装配是指在 Spring 容器中把 bean 组装到一起,前提是容器需要知道 bean 的依赖关系,如何通过依赖注入来把它们装配到一起。


32、什么是 bean 的自动装配?

        Spring 容器能够自动装配相互合作的 bean,这意味着容器不需要和配置,能通过 Bean 工厂自动处理 bean 之间的协作。


33、解释不同方式的自动装配 。

有五种自动装配的方式,可以用来指导 Spring 容器用自动装配方式来进行依赖注入。

no:默认的方式是不进行自动装配,通过显式设置 ref 属性来进行装配。

byName:通过参数名 自动装配,Spring 容器在配置文件中发现 bean的 autowire 属性被设置成 byname,之后容器试图匹配、装配和该 bean 的属性具有相同名字的 bean。

byType:通过参数类型自动装配,Spring 容器在配置文件中发现 bean的 autowire 属性被设置成 byType,之后容器试图匹配、装配和该 bean 的属性具有相同类型的 bean。如果有多个 bean 符合条件,则抛出错误。

constructor:这个方式类似于 byType, 但是要提供给构造器参数,如果没有确定的带参数的构造器参数类型,将会抛出异常。

autodetect:首先尝试使用 constructor 来自动装配,如果无法工作,则使用 byType 方式。


34.自动装配有哪些局限性 ?

自动装配的局限性是:

重写:你仍需用 和 配置来定义依赖,意味着总要重写自动装配。

基本数据类型:你不能自动装配简单的属性,如基本数据类型,String字符串,和类。

模糊特性:自动装配不如显式装配精确,如果有可能,建议使用显式装配。


35、你可以在 Spring 中注入一个 null 和一个空字符串吗?

可以。


要想了解更多:

千题千解·Java面试宝典_时光の尘的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1182803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C/C++(a/b)*c的值 2021年6月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C(a/b)*c的值 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C(a/b)*c的值 2021年6月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 给定整数a、b、c,计算(a / b)*c的值&…

专业128分总分390+上岸中山大学884信号与系统电通院考研经验分享

专业课884 信号系统 过年期间开始收集报考信息,找到了好几个上岸学姐和学长,都非常热情,把考研的准备,复习过程中得与失,都一一和我分享,非常感谢。得知这两年专业课难度提高很多,果断参加了学长…

智能网联汽车基础软件信息安全需求分析

目录 1.安全启动 2.安全升级 3.安全存储 4.安全通信 5.安全调试 6.安全诊断 7.小结 1.安全启动 对于MCU,安全启动主要是以安全岛BootROM为信任根,在MCU启动后,用户程序运行前,硬件加密模块采用逐级校验、并行校验或者混合校…

【电子通识】USB Logo的标识含义

USB 图标的设计灵感是来自罗马神话中的海神尼普顿(Neptune)(也是海王星的名字)的武器「三叉戟」,一支强有力的三齿鱼叉。不过,为了避免鱼叉形状的设计暗示人们拿着自己的USB 存储设备到处乱插(叉)。设计师对…

Failed to load module script 解决方案

Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of “text/html”. Strict MIME type checking is enforced for module scripts per HTML spec. 使用vite build 打包后部署到生产后报这个错误 原因: 资源路…

淘宝API技术文档解析,从入门到实战

探索淘宝数据的奥秘,淘宝是目前国内最大的B2C电商平台之一,每天都会产生海量的数据。借助淘宝API技术文档,我们可以轻松地获取到这些数据,从而为电商运营和数据分析提供有力支持。 1.什么是淘宝API? 淘宝API&#xf…

微前端qiankun嵌入vue项目后iconfont显示方块

个人项目地址: SubTopH前端开发个人站 (自己开发的前端功能和UI组件,一些有趣的小功能,感兴趣的伙伴可以访问,欢迎提出更好的想法,私信沟通,网站属于静态页面) SubTopH前端开发个人…

关于涉及频谱分辨率的一些问题以及FFT幅度谱数值矫正问题的梳理

问题 在研究matlab的FFT函数的时候发现了如下问题:对于信号 y e j 2 π f 1 t e j 2 π f 2 t e j 2 π f 3 t ye^{j2\pi f_1t}e^{j2\pi f_2t}e^{j2\pi f_3t} yej2πf1​tej2πf2​tej2πf3​t 其中 f 1 500 H z f_1500Hz f1​500Hz, f 2 505 H z…

Ripro-V5 6.4最新版 不限域名无限搭建(授权激活文件)

RiPro主题全新V5版本,是一个优秀且功能强大、易于管理、现代化的WordPress虚拟资源商城主题。支持首页模块化布局和WP原生小工具模块化首页可拖拽设置,让您的网站设计体验更加舒适。同时支持了高级筛选、自带会员生态系统、超全支付接口等众多功能&#…

基于SpringBoot+Vue的博物馆管理系统

基于springbootvue的博物馆信息管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录界面 管理员界面 用户界面 摘要 基于SpringBoot和Vue的博物馆…

RFSoC Debug:Petalinux 不显示 flash选项

这个板子和NI的X410是一样的。 问题 不显示Flash选项 [*] Advanced bootable images storage Settings ---> boot image settings ---> Image storage media (primary flash) --->解决 在Block Design中添加SD卡或者Flash选项,否则就不会显示&#xff1…

大数据基础入门

大数据入门 认识大数据 1.1 Web 2.0造就大数据(Ajax) 1.2单服务器时代 1.3数据的价值 企业成长模式以及数据分析的重要性 技术 分析 售前 大数据开发技术与架构 2.1大数据生态圈 2.2大数据版图 2.3实际运行环境 2.4大数据与传统项目整合 第3节 准…

C# OpenCvSharp 去除字母后面的杂线

效果 项目 代码 using OpenCvSharp; using System; using System.Drawing; using System.Windows.Forms;namespace OpenCvSharp_Demo {public partial class frmMain : Form{public frmMain(){InitializeComponent();}string image_path "";private void Form1_Loa…

Xilinx FPGA SPIx4 配置速度50M约束语句(Vivado开发环境)

qspi_50m.xdc文件: set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design] set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design] set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design] set_property CONFIG_VOLTAGE 3.3 [curren…

C++(Qt)软件调试---下载和安装最新版Windbg(16)

C(Qt)软件调试—下载和安装最新版Windbg(16) 文章目录 C(Qt)软件调试---下载和安装最新版Windbg(16)1、前言2、在线安装1.1 安装方法一1.2 安装方法二 3、离线安装 1、前言 Windbg是微软开发的一款强大的调试工具,它主…

Python--- lstrip()--删除字符串两边的空白字符、rstrip()--删除字符串左边的空白字符、strip()--删除字符串右边的空白字符

strip() 方法主要作用:删除字符串两边的空白字符(如空格) lstrip() 方法 left strip,作用:只删除字符串左边的空白字符 rstrip() 方法,作用:只删除字符串右边的空白字符 strip 英 /strɪp…

【公益案例展】火山引擎公益电子票据服务——连接善意,共创美好

‍ 火山引擎公益案例 本项目案例由火山引擎投递并参与数据猿与上海大数据联盟联合推出的 #榜样的力量# 《2023中国数据智能产业最具社会责任感企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 捐赠票据是慈善组织接受捐赠后给捐赠方开具的重要凭证&…

网络安全-零基础小白自学要点

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

时序预测 | MATLAB实现WOA-CNN-BiLSTM-Attention时间序列预测(SE注意力机制)

时序预测 | MATLAB实现WOA-CNN-BiLSTM-Attention时间序列预测(SE注意力机制) 目录 时序预测 | MATLAB实现WOA-CNN-BiLSTM-Attention时间序列预测(SE注意力机制)预测效果基本描述模型描述程序设计参考资料 预测效果 基本描述 1.MAT…

如何开发一个求职招聘小程序?详细步骤解析与教程

一、确定需求和功能 在开发求职招聘小程序之前,需要明确需求和功能。通过对市场和用户需求的调研和分析,确定小程序需要具备哪些功能,如职位发布、简历投递、在线沟通、面试安排等。 二、选择开发方式 求职招聘小程序的开发方式有多种选择…