默认情况下,Spring的Ioc容器启动时会初始化bean,但是我们可以指定Bean节点的lazy-init="true",来延迟初始化bean。这时候,只有第一次获取bean才会初始化bean。如
- <bean id="userBean" class="com.szy.spring.implbean.UserBean" lazy-init="true" />
<bean id="userBean" class="com.szy.spring.implbean.UserBean" lazy-init="true" />
如果想对所有的bean有应用延迟初始化,可以在跟节点beans设置default-lazy-init="true",如下:
- <beans default-lazy-init="true"....>
<beans default-lazy-init="true"....>
此外,如果我们还想UserBean在实例化是调用初始化方法时,我们可以加入“init-method="init"”属性,其中init为Userbean中的init()方法,与之对应,“destroy-method="destroy"”为销毁属性。
在Spring中我们通过getBean(name)方法获得实例,那么我们每次获取的实例化对象是一个还是多个呢?
我们可以通过“==”进行测试
- ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
-
PersonBean bean1=(PersonBean)ctx.getBean("userBean");
-
PersonBean bean2=(PersonBean)ctx.getBean("userBean");
- System.out.println(bean1==bean2);
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
PersonBean bean1=(PersonBean)ctx.getBean("userBean");
PersonBean bean2=(PersonBean)ctx.getBean("userBean");
System.out.println(bean1==bean2);
运行输出结果为:true
这说明了Bean交给sping容器管理之后,Bean默认情况下是单实例的。
如果我们想每次通过getBean(name)方法获得实例是一个新的实例化对象该怎么办呢?
在配置文件中节点bean有一个属性scope,只要我们配置如下即可:
- <bean id="userBean" class="com.szy.spring.implbean.UserBean" scope="prototype" />
<bean id="userBean" class="com.szy.spring.implbean.UserBean" scope="prototype" />
在运行测试代码,输出结果为:false
分享到:
相关推荐
Spring2.5.6学习笔记-最新Spring2.5.6学习笔记-最新Spring2.5.6学习笔记-Spring2.5.6学习笔记-最新Spring2.5.6学习笔记-最新Spring2.5.6学习笔记-最新最新
Spring--2.Spring 中的 Bean 配置-4
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
Spring--2.Spring 中的 Bean 配置-2-2
Spring--2.Spring 中的 Bean 配置-2-1
Spring--2.Spring 中的 Bean 配置-3
Spring--2.Spring 中的 Bean 配置-1
云的学习笔记-云的学习笔记系统-云的学习笔记系统源码-云的学习笔记管理系统-云的学习笔记管理系统java代码-云的学习笔记系统设计与实现-基于ssm的云的学习笔记系统-基于Web的云的学习笔记系统设计与实现-云的学习...
黑马程序员-SpringCloud-学习笔记01-认识微服务
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
NULL 博文链接:https://springsfeng.iteye.com/blog/1148907
Spring.NET学习笔记 - 刘冬.NET - 博客园
NULL 博文链接:https://coolszy.iteye.com/blog/519448
NULL 博文链接:https://springsfeng.iteye.com/blog/1149243
NULL 博文链接:https://jijun87120681.iteye.com/blog/1399235