SSM学习笔记,Spring(三)

实验八:bean之间的依赖(仅改变bean的创建顺序)

一般bean的创建顺序是按照配置顺序进行创建的,要想改变bean的创建顺序可以使用:使用depends-on=“依赖的bean”:即代表依赖的bean要先创建

在这里插入图片描述
即表示car创建在person之前

实验九:测试bean的作用域分别创建单实例和多实例的bean(重要)

bean的作用域:指定bean是否是单实例:默认是单实例的
用scope=来设置默认为singleton
prototype:多实例的
1)容器启动默认不去创建实例bean
2)获取实例时才会进行创建bean
3)每次获取都会创建一个新的实例
singleton:单实例的,默认的
1)在容器启动完成之前就已经创建好对象保存到容器中了
2)任何时候获取都是获取之前创建好的对象
request:在web环境下,同一次请求创建一个bean实例(基本不用)
session:在web环境下,同一次会话创建一个bean实例(基本不用)

在这里插入图片描述
将book设置为多实例

实验十:配置通过静态工厂方法创建的bean、实例工厂方法创建的bean、FactoryBean(重要)

bean的创建默认就是框架通过反射new出来的bean实例
工厂模式:工厂帮我们创建对象,有一个专门帮我们创建对象的类这个类就是工厂
如:AirPlane ap=AirPlaneFactory.getAirPlane(String jzName);

  两种工厂:
  静态工厂:工厂本身不用创建对象:都是通过静态方法调用,对象=工厂类.方法名()
  实例工厂:工厂本身需要创建对象:工厂类 对象=new 工厂类();
                              工厂对象.方法名()

1.静态工厂(不需要创建工厂对象) factory-method="getAirPlane"指定哪个方法为工厂方法

        class:指定静态工厂的全类名
        factory-method:指定哪个方法为工厂方法
        constructor-arg:为方法指定参数

如:
先创建静态工厂类
在这里插入图片描述

IOC容器中配置使用
在这里插入图片描述

2.实例工厂

 先创建实例工厂对象
 在创建需要通过工厂创建的对象bean
 factory-bean:指定当前对象创建使用哪个工厂
 factory-method:指定当前对象创建使用工厂的工厂方法
 constructor-arg:为方法指定参数

如先创建实例工厂类
在这里插入图片描述

IOC容器中先创建工厂bean
在这里插入图片描述
使用工厂创建其他bean
在这里插入图片描述

3.FactoryBean(是Spring规定的一个接口)

只要是这个接口的实现类Spring都认为是一个工厂
       1.ioc容器启动的时候不会创建这个实例
       2.FactoryBean:获取的时候才创建对象

如:先创建实现FactoryBean接口的工厂类
在这里插入图片描述
在这里插入图片描述
之后在IOC容器中对这个工厂类进行注册
在这里插入图片描述
注册完成后直接获取该工厂bean即会创建相应的bean
在这里插入图片描述

实验十一创建带有生命周期方法的bean

生命周期:bean的创建到销毁
ioc容器中注册的bean
1)单例bean,容器启动时创建好,容器关闭时销毁
2)多实例bean,获取的时候创建

    我们可以为bean自定义一些生命周期方法:spring在创建或者销毁的时候就会调用指定的方法
    destroy-method="方法名" 销毁时运行其中的方法
    init-method="方法名"   初始化时运行其中的方法
    注意初始化方法和销毁方法可以自定义:但是方法可以抛异常但是不能有参数
    如destroy-method="myDestory" init-method="myInit"
    myDestory和myInit均为自定义方法

单例Bean的生命周期
(容器启动)构造器—>初始化方法—>(容器关闭)销毁方法
在这里插入图片描述
在Book类中的myDestory和myInit方法
在这里插入图片描述

多例Bean的生命周期
获取bean(构造器—>初始化方法)—>容器关闭不会调用bean的销毁方法
在这里插入图片描述

实验十二:测试bean的后置处理器:BeanPostProcessor

Spring有一个接口,后置处理器,可以在bean的初始化前后调用这个方法
注意:无论bean是否有初始化方法后置处理器都会默认其有初始化方法
仍然会继续工作

加入后置处理器之后的bean的生命周期

(容器启动)构造器--->后置处理器的before方法--->初始化方法--->后置处理器的after方法--->初始化完成--->(容器关闭)销毁方法

如:
先编写后置处理器的实现类
在这里插入图片描述
之后注册后置处理器的实现类,注册之后即会生效,当容器创建bean时即会运行后置处理器中的方法
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值