Spring-IOC配置(XML格式)-bean

发布于:2023-01-04 ⋅ 阅读:(217) ⋅ 点赞:(0)

目录

bean的基本配置

实例演示:

bean属性scope

实例演示:

bean的生命周期控制

实例演示:

静态工厂与实例工厂创建bean

实例演示:


  • bean的基本配置

  • bean
  • 类型:标签
  • 归属:beans标签
  • 作用:定义spring中的资源
  • 受此标签定义的资源将受到spring控制
  • 格式:
  • <beans>
  •    <bean />
  • </beans>
  • 基本属性:
  • <bean id="beanId" name="beanName1,beanName2" class="ClassName"></bean>
  • id:bean的名称,通过id值获取bean
  • class:bean的类型
  • name:bean的名称,可以通过name值获取bean,用于多人配合时给bean起别名
  • 实例演示:

  • bean属性scope

  • 类型:属性
  • 归属:bean标签
  • 作用:定义bean的作用范围
  • 格式:
  • <bean scope="singleton"></bean>
  • 取值:
  • singleton:(默认)
  • 设定创建出的对象保存在spring容器中,是一个单例的对象
  • prototype:
  • 设定创建出的对象保存在spring容器中,是一个非单例的对象
  • request、session、application、websocket:
  • 设定创建出的对象放置在web容器对应的位置
  • 实例演示:

  • 使用singleton时,只创建一次对象
  • 是在加载容器时创建
  • 使用prototype时,在获取对象时创建对象,获取一次创建一次
  • bean的生命周期控制

  • 名称:init-method,destroy-method
  • 类型:属性
  • 归属:bean标签
  • 作用:定义bean对象在初始化或销毁时完成的工作
  • 格式
  • <bean init-method="init" destroy-method="destroy"></bean>
  • 取值:bean对应的类中对应的具体方法名
  • 实例演示:

  • singleton:(默认)版
  • prototype:版
  • 为啥destroy没有出现
  • destroy操作其实是运行了的
  • 但是程序结束时,虚拟机已经退了,还没来得及释放资源就已经结束了
  • 所以看不到
  • 通过在虚拟机结束前,强制把容器关了就能看到了(记得把ApplicationContext改为ClassPathXmlApplicationContext)
  • 使用prototype;destroy没有出现
  • 因为当spring配置的是非单例对象时,它不归spring容器进行管理,没放在容器中
  • spring只是帮它new了一下
  • 所以关容器和它没有关系
  • 使用singleton:(默认),destroy出现
  • 静态工厂与实例工厂创建bean

  • 静态工厂版:
  • 名称:factory-bean
  • 类型:属性
  • 归属:bean标签
  • 作用:定义bean对象创建方式
  • 使用静态工厂的形式创建bean,兼容早期遗留系统的升级工作
  • 格式
  • <bean class="FactoryClassName" factory-method="factoryMethodName"></bean>
  • 取值:工厂bean中用于获取对象的静态方法名
  • 注意事项
  • class属性必须配置成静态工厂的类名
  • 实例工厂版:
  • 名称:factory-bean,factory-method
  • 类型:属性
  • 归属:bean标签
  • 作用:定义bean对象创建方式
  • 使用实例工厂的形式创建bean,兼容早期遗留系统的升级工作
  • 格式
  • <bean factory-bean="factoryBeanId" factory-method="factoryMethodName"></bean>
  • 取值:工厂bean中用于获取对象的实例方法名
  • 注意事项
  • 使用实例工厂创建bean首先需要将实例工厂配置bean,交由spring进行管理
  • factory-bean是实例工厂的beanId
  • 实例演示:

  • 静态工厂版:
  • 构造工厂类
  • 配置好配置文件
  • 测试成功
  • 实例工厂版:
  • 构造工厂类
  • 配置好配置文件
  • 测试发现之前的静态也一同执行了(因为加载配置文件把之前的也加载了)
  • 注释掉之前静态的配置再测试测试成功
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到