您的位置:首页 > 编程语言 > Java开发

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: