Spring(一)-Spring Bean作用域、生命周期、继承

一、Spring Bean
Spring Bean的配置形式:
• 基于xml的配置文件
• 基于注解的配置

• 基于java的配置
spring bean的定义:
被称作 bean 的对象是构成应用程序的支柱也是由 Spring IoC 容器管理的。bean 是一个被实例化,组装,并通过Spring IoC 容器所管理的对象。
1) spring bean 生命周期
理解 Spring bean 的生命周期很容易。当一个 bean 被实例化时,它可能需要执行一些初始化使它转换成可用状态。同样,当bean 不再需要,并且从容器中移除时,可能需要做一些清除工作。
为了定义安装和拆卸一个 bean,我们只要声明带有 init-method 和/或 destroy-method 参数的。init-method 属性指定一个方法,在实例化 bean 时,立即调用该方法。同样,destroy-method指定一个方法,只有从容器中移除 bean 之后,才能调用该方法。
bean的初始化方法:在实例化bean前,调用初始化方法
首先创建一个InitBean类

配置beans.xml文件

编写测试方法

结果:

同理在bean的销毁时,同样配置destroy-method="dostroy".而该方法是在容器关闭时调用的,在这方法就不截图演示了.
2)spring bean的作用域
默认为:singletion

实列如下:
singleton为默认的
1. 首先创建一个ScopeBean类

2.配置beans.xml文件

3.编写测试scope,并且从容器中去两次,看结果如何

4.结果:

如果在配置文件中添加scope="prototype",则会实列化两次,并且哈希值也不一样,说明不是一个对象,这个属性就说明了prototype可以创建任意数量的对象实列;
截图如下:
配置文件

测试结果:

比较常用的singleton和prototype。如果一个Bean实例被设置为singleton,那么每次请求该Bean时都会获得相同的实例。容器负责跟踪Bean实例的状态,负责维护Bean实例的生命周期行为。如果一个Bean实例被设置为prototype,那么每次请求该di的Bean,Spring都会创建一个新的Bean实例返回给程序,在这种情况下,Spring容器仅仅使用new关键字创建Bean实例,一旦创建成功,容器将不会再跟踪实例,也不会维护Bean实例的状态。

如果我们不指定Bean的作用域,则Spring会默认使用singleton作用域。
Java在创建Java实例时,需要进行内存申请。销毁实例时,需要完成垃圾回收。这些工作都会导致系统开销的增加。因此,prototype作用域Bean的创建、销毁代价会比较大。而singleton作用域的Bean实例一旦创建成功,可以重复使用。因此,除非必要,否则尽量避免将Bean的作用域设置为prototype。
3)spring bean的继承
事列如下:
首先编写一个HellWorld类和HelloChina类并生成他们的getset方法


编写配置文件:

测试类:

结果:

这是正常的结果,如果在配置文件中添加parent属性,则子类继承父类

结果:

如果在这不注释原有的属性的,则还是保持原有的属性;
注意这还可以把父bean中添加abstract="true",默认是FALSE,这样的话,该父bean就不能事列话,运行就会出错,如下

错误org.springframework.beans.factory.BeanIsAbstractException: Errorcreating bean with name 'hello': Bean definition is abstract
总结几点bean的继承:
Spring同意继承bean的配置,被继承的bean称为父bean。继承这个父Bean的Bean称为子Bean
子Bean从父Bean中继承配置,包含Bean的属性配置
→ 子Bean也能够 覆盖从父Bean继承过来的配置
• 父Bean能够作为配置模版,也能够作为Bean实例, 若仅仅想把父Bean作为模版,能够配置的abstract属性为true。这样Spring将不会实例化这个Bean
并非元素里的全部属性都会被继承。比方:autowire,abstract等。

→ 也 能够忽略父Bean的class属性,让子Bean指定自己的类,而共享同样的属性配置,但此时 abstract必须设为true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的小巍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值