Spring——bean配置+bean实例化的三种方式+bean生命周期

 

 

 

bean基本配置

bean别名配置

 

在IOC容器里面一个容器可以拥有多个别名如下图所示,利用bean标签里面一个叫做name的属性,bookservice拥有三个别名

在测试类里面获取bean对象的时候可以使用别名 

  

在配置文件ref属性获取的时候也可以使用别名

bean作用范围配置

 

Spring提供的每一个bean都是单例的,输出地址都一样

若想使得该bean对象是一个非单例的对象,需要用到一个新的属性——scope

 改变scope属性的值后重新输出就可以得到两个不同的bean

 

 

对于bean来说,一些需要创建多次的对象是不适合放到容器里面

bean实例化的三种方式——构造方法(常用)

 

bean的实例化过程可以采用构造方法的方式,不管是公共还是私有都可以被调用,因为是用的反射的方式,所以即使是私有的也可以访问。

加上一个参数就无法调用了,说明bean调用的是对象的无参构造方法

bean实例化的三种方式——静态工厂(了解即可)

 

先定义 一个接口实现类

再建一个静态工厂获取对象

 

在 测试类中 

 

上面这种造对象的方式要想交给Spring进行管理需要在配置文件里面如下设置

注意这里bean本来应该创建的是这个Factory工厂对象,要拿到的是orderDao,要使用一个新的属性,factory-method,属性值即使工厂里面的构造方法 

然后就可以通过Spring的形式得到OrderDao 

 

bean实例化的三种方式——实例工厂与FactoryBean() 

和上面那个不同,这个工厂方法不是静态的  

 在测试类里面 

在配置文件中

 

改良版本

新建 一个实现类统一了标准<>里面是要得到的bean对象类型,上往下三个方法分别用来得到bean实例 ,得到bean类型,设定bean是否单例

...............不写了,以后用到的时候再来看吧,据说大量的框架都是用改良版本和spring打交道

 Bean生命周期

定义如下一个类 

 

在<bean>标签下有一个init-method和一个destroy-method属性可以指定在初始化阶段和销毁解段调用哪一个方法。

 

但是因为这里的程序都是直接结束,没有销毁容器的机会,所以不会有输出。

改成如下格式就可以正常的执行销毁时要执行的方法

 

还有另一种关闭容器的方式,加上一个关闭钩子,

作用就是在虚拟机 关闭之前先关闭容器 

 

 

还有一种方式就是spring使用接口控制生命周期,可以杜绝上面的这个init—method

 

Bean完整生命周期

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值