Spring精华问答 | 什么是Spring inner beans?

640?wx_fmt=png

Spring框架是一个开源的Java平台,它提供了非常容易,非常迅速地开发健壮的Java应用程序的全面的基础设施支持。今天就让我们来看看关于Spring的精华问答吧。


640?wx_fmt=gif1

Q:请解释Spring Bean的生命周期?


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

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

初始化之后调用的回调方法。

销毁之前调用的回调方法。

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

  • InitializingBean和DisposableBean回调接口

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

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

  • @PostConstruct和@PreDestroy注解方式

使用customInit()和 customDestroy()方法管理bean生命周期的代码样例如下:640?wx_fmt=png


640?wx_fmt=gif2

Q:Spring Bean的作用域之间有什么区别?


A:Spring容器中的bean可以分为5个范围。所有范围的名称都是自说明的,但是为了避免混淆,还是让我们来解释一下:

singleton:这种bean范围是默认的,这种范围确保不管接受到多少个请求,每个容器中只有一个bean的实例,单例的模式由bean factory自身来维护。

prototype:原形范围与单例范围相反,为每一个bean请求提供一个实例。

request:在请求bean范围内会每一个来自客户端的网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。

Session:与请求范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。

global-session:global-session和Portlet应用相关。当你的应用部署在Portlet容器中工作时,它包含很多portlet。如果你想要声明让所有的portlet共用全局的存储变量的话,那么这全局变量需要存储在global-session中。全局作用域与Servlet中的session作用域效果相同。


640?wx_fmt=gif3

Q:什么是Spring inner beans?


A:在Spring框架中,无论何时bean被使用时,当仅被调用了一个属性。一个明智的做法是将这个bean声明为内部bean。内部bean可以用setter注入“属性”和构造方法注入“构造参数”的方式来实现。比如,在我们的应用程序中,一个Customer类引用了一个Person类,我们的要做的是创建一个Person的实例,然后在Customer内部使用。640?wx_fmt=png

内部bean的声明方式如下:640?wx_fmt=png


640?wx_fmt=gif4

Q:Spring框架中的单例Beans是线程安全的么?


A:Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定。但实际上,大部分的Spring bean并没有可变的状态(比如Serview类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的。如果你的bean有多种状态的话(比如 View Model 对象),就需要自行保证线程安全。最浅显的解决办法就是将多态bean的作用域由“singleton”变更为“prototype”。


640?wx_fmt=gif5

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


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

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

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

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

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

下面看一下具体的例子:640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png


640?wx_fmt=png

小伙伴们冲鸭,后台留言区等着你!

关于Spring,今天你学到了什么?还有哪些不懂的?除此还对哪些话题感兴趣?快来留言区打卡啦!留言方式:打开第XX天,答:……

同时欢迎大家搜集更多问题,投稿给我们!风里雨里留言区里等你~


福利

1、扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg

2、公众号后台回复:白皮书,获取IDC最新数据白皮书整理资料!


推荐阅读:

  • VMware竟然出了一款防火墙

  • 技术头条

  • 你的 AI 老师已上岗

  • 要成为年薪百万的技术大牛必经历这5个阶段, 收好这份超实用的技术进阶指南 | 技术头条

  • 助力 Android 抗衡 iOS,华为发布方舟编译器!

  • 程序员的黑砖窑,东南亚博彩骗局详解

  • 售价910元!周志华等人英文新书《演化学习》出炉!


640?wx_fmt=png真香,朕在看了!

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

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

相关文章

gb-heima/order 项目 处理

gb-heima/order 项目 处理 1. 用Intellij Idea打开克隆好的项目2. 代码源程序简要说明3. 使用Maven构建该项目 1. 用Intellij Idea打开克隆好的项目 2. 代码源程序简要说明简要说明代码源程序 3. 使用Maven构建该项目 在Intellij Idea中使用Maven构建该项目Maven 构建项目

qt使用自带的日志输出实例输出日志时,在日志中显示行数

当使用qInstallMessageHandler&#xff08;&#xff09;安装回调函数&#xff0c;通过回调函数来输出日志时&#xff0c;日志文件中没有行数和文件信息。可以在.pro文件中添加以下代码&#xff1a; #release中在日志添加行数&#xff0c;文件信息 DEFINES QT_MESSAGELOGCONTE…

Windows OpenGL ES 图像单色

目录 一.OpenGL ES 图像单色 1.原始图片2.效果演示 二.OpenGL ES 图像单色源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL E…

要闻君说:特斯拉重磅推出影响力报告;三星官宣完成5纳米EUV工艺研发还承诺提供样品;国内首条5G智能制造生产线正式“上马”...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 连续三天跌停的视觉中国股票…

运行Jenkins部署任务

一、运行Jenkins部署任务 1. 执行Jenkins部署任务2. 打开浏览器访问部署应用程序3. 确定发布结果的正确性4. 确认执行结果成功 1. 执行Jenkins部署任务 查看控制台输出 异常信息如下&#xff1a; Started by user admin Running as SYSTEM Building remotely on TestEnv in w…

Windows OpenGL 图像单色

目录 一.OpenGL 图像单色 1.原始图片2.效果演示 二.OpenGL 图像单色源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL ES 学习…

QMap删除其中的保存的元素本身,并删除容器中保存的元素

前言 qmap删除元素可以采用erase(),但使用过程中却必须注意以下&#xff1a; qmap中的元素被删除后&#xff0c;其迭代器自动指向下一个元素&#xff1b; 示例 要求删除创建时保存在QMap中的指针&#xff0c;并将qmap中的元素删除。下面直接上代码。 QMap<int,QPushButt…

创建Jenkins自动化部署任务

创建Jenkins自动化部署任务 1. 创建Jenkins任务2. 填写Server信息3. 配置Git参数4. 填写构建语句&#xff0c;实际部署测试环境 1. 创建Jenkins任务 【新建Item】-【输入任务名称】 添加任务描述 限制项目的运行节点 2. 填写Server信息 【登录github】-【打开order项目】-【复…

一文读懂NoSQL的模式 | 时光机

戳蓝字“CSDN云计算”关注我们哦&#xff01;时光机&#xff1a;搭载这部时光机&#xff0c;带您回顾《程序员》大量优秀文章&#xff0c;重温经典技术干货&#xff0c;我们发现硬核技术永不过时&#xff0c;对于get要点、solve难题、提高自我&#xff0c;仍有非凡意义。作者&a…

QGraphicsView加入到布局,所在的窗口变大,视图和场景都变大,使场景中的矩形也变大

需求 窗口变化时&#xff0c;窗口中的矩形框也变化。 效果展示 当窗口变大时其矩形框也变大 要求绿色矩形框与蓝色背景的边距始终为10。 代码 直接上项目的代码。 项目结构 各文件的代码 main.cpp #include "dialog.h"#include <QApplication>int main…

OpenGL 单色

目录 一.OpenGL 单色图 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 单色 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >…

微服务落地,我们在考虑什么?| 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;李宁转自&#xff1a; 博云技术社区导读微服务已经成为过去几年软件架…

CentOS 7 安装版本管理 GitLab

一、找到Gitlab -ce的安装页面(默认ee收费) gitlab官网&#xff1a;https://about.gitlab.com/install 也可以直接跳转gitlab安装ce页面:(推荐使用) https://about.gitlab.com/install/#centos-7?versionce 二、Gitlab-ce安装流程 1. 安装并配置gitlab必要的依赖项2.…

qt中设置控件不能使用

情景描述 在初始化时&#xff0c;使其action置灰&#xff0c;不能操作&#xff0c;随后将action设置为可以操作。 方法 直接上代码&#xff0c;通过下面的代码可以实现将action设置为置灰状态。 ui->openAction->setDisabled(true);//动作被禁用 //或者可以这样实现 …

5G精华问答 | 5G是否会“逼退”4G?

5G的概念虽然很早就已经提出&#xff0c;但是对于大多数用户来说&#xff0c;真正听到并且对5G有了初步的了解还是在今年。今天就让我们来看看关于5G的精华问答吧。1Q&#xff1a;5G标准是怎么来的&#xff0c;由谁制定的呢A&#xff1a;5G是由“第三代合作伙伴计划组织”(3rd …

自建gitlab服务器以及出现502错误解决方案

自建gitlab服务器502错误解决方案 安装gitlab [rootianly]# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash [rootianly]# yum install -y gitlab-ce 配置 [rootianly]# vim /etc/gitlab/gitlab.rb 修改两个冲突端口号 …

Windows OpenGL ES 图像透明度

目录 一.OpenGL ES 图像透明度 1.原始图片2.效果演示 二.OpenGL ES 图像透明度源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 Open…

求qt如何解决小数计算过程中的精度丢失

问题描述 在下面的例子中&#xff0c;变量a减去一个常量&#xff0c;本该值为0.90&#xff0c;但是通过程序得到a的值0.8999999999&#xff0c;例子如下&#xff1a; qreal a 0.95; a a - 0.05;不光是做减法的时候会出现这样的问题&#xff0c;还有做乘法的时候也会出现这样…

山城虽寒、但物联却热,探访中移物联小记一笔……

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;这是小编第二次来到山城重庆&#xff0c;尽管春寒料峭但却收获颇丰&#xff0c;要问缘…

Redis的启动、使用和停止

1、Redis的启动 &#xff08;1&#xff09;前端模式启动 ①直接运行bin/redis-server将以前端模式启动&#xff1a;切换到 /usr/local/redis/bin目录下&#xff0c;然后./redis-server &#xff1b; ②前端模式的缺点是启动完成后&#xff0c;不能再进行其他操作&#xff1b…