Spring框架学习理解(一)Bean的作用域及生命周期

Bean存在作用域,可以在配置文件scope进行配置,Spring中的bean默认作用域为singleton(单例)的,一般单例和原型是比较常见的配置。

bean的作用域为单例下:

  1. 如果scope配置为单例时,当加载配置文件,创建Spring容器时,bean已经就被创建了,但是还没有获取。bean的实例化个数为一个,也就是对象只创建了一次,无论后续userDao有多少,都指向了同一个地址。
  2. 此时bean的生命周期为:1.当应用加载,创建容器时,bean对象就被创建了  2.如果ioc容器一直存在,那么bean对象会一直存活  3.当关闭应用,销毁容器时,对象即被销毁
UserDao userDao1 = (UserDao) classPathXmlApplicationContext.getBean("userDao");
UserDao userDao2 = (UserDao) classPathXmlApplicationContext.getBean("userDao");

bean的作用域为原型时:

  1. 加载配置文件bean不会被创建,只有在getBean时才会创建bean对象。bean的实例化对象会有多个,uesrDao的地址不同
  2. 此时bean的生命周期为:1.当使用对象时(也就是getBean时),对象会被创建  2.对象在使用,那么bean会一直存活  3.如果对象长时间不进行使用,会被垃圾回收期进行回收

Bean的实例化的三种方法:

  1. 通过无参构造方法创建
  2. 通过工厂静态方法创建
    <bean id="userDao" class="com.xuhaobo.factoy.StaticFactory" scope="singleton" factory-method="getUserDao"></bean>

  3. 通过工厂实例方法创建
    <bean id="factory" class="com.xuhaobo.factoy.DynamicFactory"></bean>
    <bean id="userDao" class="com.xuhaobo.dao.impl.UserDaoImpl" factory-bean="factory" factory-method="getUserDao"></bean>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值