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

1

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生命周期的代码样例如下:

2

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作用域效果相同。

3

Q:什么是Spring inner beans?

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

内部bean的声明方式如下:

4

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

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

5

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

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

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

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

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

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

下面看一下具体的例子:

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

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

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

福利

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

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

推荐阅读:

  • VMware竟然出了一款防火墙

  • 技术头条

  • 你的 AI 老师已上岗

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

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

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

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

真香,朕在看了!

Spring精华问答 | 什么是Spring inner beans?相关推荐

  1. Spring精华问答 | 为何使用Spring?

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

  2. Spring精华问答 | 如何集成Spring Boot?

    Spring框架是一个开源的Java平台,它提供了非常容易,非常迅速地开发健壮的Java应用程序的全面的基础设施支持.今天就让我们一起来看看关于Spring的精华问答吧. 1 Q:如何在自定义端口上运 ...

  3. Spring精华问答 | 什么是Spring Cloud?

    戳蓝字"CSDN云计算"关注我们哦! Spring是为解决企业应用程序开发复杂性而创建的一个Java开源框架,应用非常广泛.业内非常流行的SSH架构中的其中一个"S&qu ...

  4. Spring精华问答 | Spring 能帮我们做什么?

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

  5. Spring精华问答 | Spring框架有哪些主要模块?

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

  6. Spring精华问答 | 什么是YAML?

    Spring框架是一个开源的Java平台,它提供了非常容易,非常迅速地开发健壮的Java应用程序的全面的基础设施支持.今天就让我们一起来看看关于Spring的精华问答吧. 1 Q:如何在自定义端口上运 ...

  7. boot spring 获取请求端口浩_Spring精华问答 | 如何集成Spring Boot?

    Spring框架是一个开源的Java平台,它提供了非常容易,非常迅速地开发健壮的Java应用程序的全面的基础设施支持.今天就让我们一起来看看关于Spring的精华问答吧. 1 Q:如何在自定义端口上运 ...

  8. Spring精华问答 | Spring Bean的自动装配是怎么回事?

    戳蓝字"CSDN云计算"关注我们哦! Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Sprin ...

  9. Spring精华问答 | Spring Boot有哪些优点?

    戳蓝字"CSDN云计算"关注我们哦! Spring是于2003 年兴起的一个轻量级的Java 开发框架,为了解决企业应用开发的复杂性而创建的.今天,我们一起来看看关于Spring更 ...

最新文章

  1. PMP®考试是什么机构
  2. 微软私有云分享(R2)11-应答文件浅析
  3. Jenkins之gitlab配置
  4. lustre1.6.5+drbd主备切换
  5. pdf.js浏览中文pdf乱码的问题解决
  6. 工作275:表单验证重置
  7. 项目总结13:Jav文件压缩-InputStream转化为base64-Base64解码并生成图片
  8. java.lang.UnsatifiedLinkError错误一例:在eclipse中启动应用报错
  9. ZUC密码(C语言实现)
  10. 【打印机】连接共享打印机找不到网络路径解决方案
  11. python中变量名有哪些
  12. mysql等级保护_网络安全等级保护测评-MYSQL篇
  13. 本题要求计算给定的一系列正整数中奇数的和。
  14. 五阶魔方公式java_五阶魔方降阶法公式是什么?
  15. 运行Android Studio,一直提示:Error running app: Instant Run requires 'Tools | Android | Enable ADB integrat
  16. 淘宝、拼多多、京东等购物平台的优惠券公众号免费搭建持续更新
  17. 成都拓嘉辰丰:拼多多关键词搜不到自家商品怎么回事?
  18. 机器学习4——推荐系统
  19. python cx_oracle 取回数据后 LOB variable no longer valid after subsequent fetch
  20. mall在Linux环境下的部署(基于Docker容器)

热门文章

  1. mysql range代表什么意思_MySQL数据表range分区例子
  2. c++ map 初始化_如何调整Linux内核启动中的驱动初始化顺序?
  3. Linux中存储相关的命令,Linux存储管理命令与HAB相关命令
  4. python扫描字符串文本时下线_python:SyntaxError:扫描字符串li时的EOL
  5. 翟天临凌晨回应“毕业季被声讨”
  6. 14.1178亿人 流动人口超3亿 “大国普查”这些数据很重要
  7. 我见过的最漂亮代码---通过删除代码来实现功能的提升
  8. java8新特性lambda表达式、函数式编程、方法引用和接口默认方法以及内部类访问外部变量
  9. java中有关文件流的操作
  10. 5分钟搞定Loki告警多渠道接入