Spring中Bean的生命周期
2014-12-14 17:22
323 查看
Spring中Bean的生命周期:
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。
否则将追究法律责任。http://java999.blog.51cto.com/259217/184572
这里我只讨论Bean是怎样初始化的:
1: 对于singleton Bean,spring能够管理它的生命周期,知道其什么时候实例化,什么时候销毁。
2: 对于non-singleton Bean,spring没有管理它的生命周期,而是交给客户端自己管理,每次客户端发送一个请求就会创建一个实例。
3: 如果Bean是non-singleton,则不会在spring加载的时候实例化,而是在每次用到的时候实例化。
4: 如果Bean是singleton而且没有设置lazy-init="true",就在spring加载的时候实例化。如果设置了lazy就在第一次调用的时候实例化 。
Fengshan.java:
public class Fengshan {
public Fengshan(){
System.out.println("---------创建");
}
}
Test.java:
public class Test extends TestCase {
public void testBean(){
//加载spring配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
//调用bean
//Fengshan fengshan = (Fengshan) ctx.getBean("fengshan");
}
}
bean.xml:spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!—1.单例非lazy,此bean在spring配置文件加载时实例化-->
<bean id="fengshan" class="com.dvnchina.test.Fengshan" scope="singleton" />
<!—2.单例lazy,所以此bean在spring配置文件加载时不实例化,只在第一次使用此bean时实例化-->
<!--
<bean id="fengshan" class="com.dvnchina.test.Fengshan" scope="singleton" lazy-init="true" />
-->
<!—3.非单例,此bean在spring配置文件加载时不实例化,每次请求此bean时都实例化-->
<!--
<bean id="fengshan" class="com.dvnchina.test.Fengshan" scope="prototype" />
-->
</beans>
可以分别使用配置文件中1,2,3看看是否创建了bean来验证以上的结论。附件为例子工程(Spring_BeanLifecycle),可直接导入eclipse。
本文出自 “青山” 博客,请务必保留此出处http://java999.blog.51cto.com/259217/184572
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。
否则将追究法律责任。http://java999.blog.51cto.com/259217/184572
这里我只讨论Bean是怎样初始化的:
1: 对于singleton Bean,spring能够管理它的生命周期,知道其什么时候实例化,什么时候销毁。
2: 对于non-singleton Bean,spring没有管理它的生命周期,而是交给客户端自己管理,每次客户端发送一个请求就会创建一个实例。
3: 如果Bean是non-singleton,则不会在spring加载的时候实例化,而是在每次用到的时候实例化。
4: 如果Bean是singleton而且没有设置lazy-init="true",就在spring加载的时候实例化。如果设置了lazy就在第一次调用的时候实例化 。
Fengshan.java:
public class Fengshan {
public Fengshan(){
System.out.println("---------创建");
}
}
Test.java:
public class Test extends TestCase {
public void testBean(){
//加载spring配置文件
ApplicationContext ctx = new ClassPathXmlApplicationContext("bean.xml");
//调用bean
//Fengshan fengshan = (Fengshan) ctx.getBean("fengshan");
}
}
bean.xml:spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!—1.单例非lazy,此bean在spring配置文件加载时实例化-->
<bean id="fengshan" class="com.dvnchina.test.Fengshan" scope="singleton" />
<!—2.单例lazy,所以此bean在spring配置文件加载时不实例化,只在第一次使用此bean时实例化-->
<!--
<bean id="fengshan" class="com.dvnchina.test.Fengshan" scope="singleton" lazy-init="true" />
-->
<!—3.非单例,此bean在spring配置文件加载时不实例化,每次请求此bean时都实例化-->
<!--
<bean id="fengshan" class="com.dvnchina.test.Fengshan" scope="prototype" />
-->
</beans>
可以分别使用配置文件中1,2,3看看是否创建了bean来验证以上的结论。附件为例子工程(Spring_BeanLifecycle),可直接导入eclipse。
本文出自 “青山” 博客,请务必保留此出处http://java999.blog.51cto.com/259217/184572
相关文章推荐
- Spring中bean的生命周期
- 7 -- Spring的基本用法 -- 9...容器中Bean的生命周期
- Spring入门Blog[三、Bean的懒加载和生命周期]
- Spring--bean的生命周期
- Spring中Bean的生命周期 初步研究
- (转)Spring管理的Bean的生命周期
- spring中Bean的生命周期总结
- SPRING系列二之 Bean生命周期
- Spring-IOC容器之Bean的生命周期
- Spring核心--bean的生命周期
- SPRING IN ACTION 第4版笔记-第一章-005-Bean的生命周期
- Spring容器中Bean的生命周期
- Spring Bean配置默认为单实例 pring Bean生命周期
- 面试Spring之bean的生命周期
- Spring中bean的生命周期
- Spring(七):Bean的生命周期
- spring bean的生命周期三种控制方法
- 详解Spring-Bean生命周期实例
- spring知识三-----SpEL&生命周期&bean配置方式
- Spring第五弹—–配置Spring管理的bean的作用域和生命周期