Bean

IOC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IoC容器中统称为Bean



文章目录

  • Bean
  • bean配置
  • 配置别名
  • Bean作用范围配置
  • bean的实例化
  • Bean的生命周期



bean配置

名称:bean

类型:标签

所属:beans标签

功能:定义Spring核心容器管理的对象

格式:

spring 将 bean 中的数据复制到 map 中 spring bean使用_spring


属性列表:

id:bean的id,使用容器可以通过id值获取对应的bean,在一个容器中id是唯一的

class:bean的类型,及配置的bean的全路径类名

配置别名

名称:name

类型:属性

所属:bean标签

功能:定义bean的别名,可定义多个,使用逗号(,)分号(;)空格( )进行分隔

spring 将 bean 中的数据复制到 map 中 spring bean使用_xml配置_02


注意事项:获取bean无论是通过id还是name获取,如果无法获取到,将抛出异常NoSuchBeanDefinitionExption异常

Bean作用范围配置

名称:scope

类型:属性

所属:bean标签

功能:定义bean的作用范围:

singleton:单例(默认的)

prototype:非单例

spring 将 bean 中的数据复制到 map 中 spring bean使用_xml配置_03


scope的取值不仅仅只有singleton和prototype,还有request、session、application、 websocket ,表示创建出的对象放置在web容器(tomcat)对应的位置。比如:request表示保存到request域中。

一般单例可以满足日常开发

bean的实例化

bean本质上就是对象,创建bean使用构造方法完成

1.构造方法方式

BookDaoImpl实现类

spring 将 bean 中的数据复制到 map 中 spring bean使用_构造方法_04


applicationContext.xml配置

spring 将 bean 中的数据复制到 map 中 spring bean使用_构造方法_05


测试类

spring 将 bean 中的数据复制到 map 中 spring bean使用_spring_06


注意:无参构造方法如果不存在,将抛出异常

2.静态工厂方式

EatDaoImpl实现类

spring 将 bean 中的数据复制到 map 中 spring bean使用_生命周期_07


工厂类

spring 将 bean 中的数据复制到 map 中 spring bean使用_构造方法_08


applicationContext.xml配置

spring 将 bean 中的数据复制到 map 中 spring bean使用_xml配置_09


测试类

spring 将 bean 中的数据复制到 map 中 spring bean使用_构造方法_10

3.实例工厂方式,变种为实现FactoryBean接口

UserDao实现类

spring 将 bean 中的数据复制到 map 中 spring bean使用_构造方法_11


工厂类:

spring 将 bean 中的数据复制到 map 中 spring bean使用_spring_12


applicationContext.xml配置

spring 将 bean 中的数据复制到 map 中 spring bean使用_生命周期_13


测试类

spring 将 bean 中的数据复制到 map 中 spring bean使用_生命周期_14


UserFactoryBean类

spring 将 bean 中的数据复制到 map 中 spring bean使用_生命周期_15


applicationContext.xml配置

spring 将 bean 中的数据复制到 map 中 spring bean使用_构造方法_16

Bean的生命周期

生命周期:从创建到消亡的完整过程
bean生命周期:bean从创建到销毁的整体过程
bean生命周期控制:在bean创建后到销毁前做一些事情
Bean销毁时机:
容器关闭前触发bean的销毁
关闭容器方式:
手动关闭容器:ConfigurableApplicationContext接口close()操作
注册关闭钩子,在虚拟机退出前先关闭容器再退出虚拟机:ConfigurableApplicationContext接口registerShutdownHook()操作