calmJava

StillWaterRunsDeep
随笔 - 3, 文章 - 11, 评论 - 0, 引用 - 0
数据加载中……

spring_3

1:
三种实例化 bean 的方式:
(1): 使用类构造器实例化
<bean id="personService" class="com.rui.personServiceBean"/>
(2):使用静态工厂方法实例化
<bean id="personService" class="com.rui.personServiceBeanFactory" factory-method="createPersonServiceBean"/>
public class PersonServiceFactory {
 public static PersonService createPersonService(){
  return new PersonServiceBean();
 }
}
(3): 使用实例工厂方法实例化:
<bean id="personServiceFactory" class="com.rui.PersonServiceBeanFactory"/>
<bean id="personService" factory-bean="personServiceFactory" factory-method="createPersonServiceBean"/>
public class PersonServiceFactory {
 public PersonService createPersonService(){
  return new PersonServiceBean();
 }
}

2:
在交给Spring管理的bean 默认是单实例 singleton

3:
Bean的作用域:

(1): singleton

此为默认值,在每个Spring IOC容器中的一个bean定义只有一个对象实例.默认情况下会在容器启动时初始化bean.但我们可以指定Bean节点的lazy-init="true"来延迟初始化bean,这时候,只有第一次获取bean时才初始化
bean 如:
<bean id="xxx" class="com.rui.PersonServiceBean" lazy-init="true"/>
如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init="true",如下
<beans default-lazy-init="true" ... >

(2): prototype
每次从容器中获取bean都是新的对象

(3): request
(4): session
(5): global session


4:
指定 bean 的初始化和销毁方法
在XML文件中指定
<bean id="" class="" lazy-init="false"
 init-method="init"
 destory-method="destory" />

public class PersonServiceBean(){

 public PersonServiceBean(){
  // 在实例化时执行  
 }
 public void init(){
  // 在初始化时执行
 }
 public void destory(){
  // 在销毁时执行
 }
}

使Spring 容器正常的关闭
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");

ctx.close(); // 调用 .close() 方法以使 Spring 容器正常的关闭

 

 

 

 

 

 

 

posted on 2011-01-05 20:55 calmJava 阅读(59) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: