spring中创建bean对象时多例和单例的区别

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xsi:schemaLocation="http://www.springframework.org/schema/beans  
  5.            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">  
  6.            <!--   
  7.                 init-method  
  8.                   * 该方法是由spring容器执行  
  9.                   * 在构造函数之后执行  
  10.                   * 如果在构造函数之后,在调用方法之前要做一些工作,可以在init方法中完成  
  11.                 destroy-method  
  12.                   * 如果该bean是单例(默认就是singlton),则在spring容器关闭或者销毁的时候,执行该方法  
  13.                   * 如果该bean是多例(scope="prototype"),则spring容器不负责销毁  
  14.                 说明:要想让spring容器控制bean的生命周期,那么该bean必须是单例  
  15.                            如果该bean是多例,该bean中还有资源,关闭资源的操作由程序员完成  
  16.             -->  
  17.     <bean id="helloWorld" class="cn.edu.initdestroy.HelloWorld" scope="prototype" init-method="init" destroy-  
  18.   
  19. method="destroy"></bean>  
  20. </beans>  

注意: 当一个bean是多例模式的情况下,lazy-init为false或者default无效。

[java]  view plain  copy
  1. <!--   
  2.         在默认情况下,spring创建bean是单例模式  
  3.         scope  
  4.            singleton  默认  
  5.                 单例  
  6.                 属性是共享的  
  7.                 一般情况下,把数据存放在方法中的变量中  
  8.            prototype  
  9.                 多例  
  10.                 当一个bean是多例模式的情况下,lazy-init为false或者default无效  
  11.    -->  
  12.   <bean id="helloWorld"  class="cn.itcast.spring0909.scope.HelloWorld" scope="prototype" lazy-init="false"></bean>  

[java]  view plain  copy
  1. <!--   
  2.                 在启动spring容器的时候,spring容器配置文件中的类就已经创建完成对象了  
  3.             lazy-init  
  4.                default 即为 false  
  5.                true  在context.getBean的时候才要创建对象  
  6.                   *  优点  
  7.                                 如果该bean中有大数据存在,则什么时候context.getBean,什么时候创建对象  
  8.                                 可以防止数据过早的停留在内存中,做到了懒加载  
  9.                   *  缺点  
  10.                                  如果spring配置文件中,该bean的配置有错误,那么在tomcat容器启动的时候,发现不了  
  11.                false 在启动spring容器的时候创建对象  
  12.                   *  优点  
  13.                                  如果在启动tomcat时要启动spring容器,  
  14.                                  那么如果spring容器会错误,这个时候tomcat容器不会正常启动  
  15.                   *  缺点  
  16.                                   如果存在大量的数据,会过早的停留在内存中  
  17.            -->  
  18.   <bean id="helloWorld" class="cn.edu.spring0909.createobject.when.HelloWorl" lazy-init="true"></bean>  
  19.   <bean id="person" class="cn.edu.spring0909.createobject.when.Person" lazy-init="true"></bean>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值