随笔-21  评论-29  文章-0  trackbacks-0

在以前的实例中我们使用的是第一种方法
今天我们用另外两种方法来实例化Bean

2.使用静态工厂方法实例化
先建立一个工厂类PersonServiceBeanFactory

package cn.itcast.service.impl;

public class PersonServiceBeanFactory {
    
public static PersonServiceBean createPersonServiceBean()//该静态工厂方法用来创建Bean对象
        return new PersonServiceBean();
    }
    
}


如何配置呢?在beans.xml加入如下配置语句
<bean id="personService2" class="cn.itcast.service.impl.PersonServiceBeanFactory"
          factory-method="createPersonServiceBean"/>


将SpringTest类中的getBean参数改为personService2,看是否能够得到。
package junit.test;

import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.itcast.service.PersonService;

public class SpringTest {

    @BeforeClass
    
public static void setUpBeforeClass() throws Exception {
    }


    @Test 
public void instanceSpring(){
        ApplicationContext ctx 
= new ClassPathXmlApplicationContext("beans.xml");
        PersonService personService 
= (PersonService)ctx.getBean("personService2");
        personService.save();
    }

}


执行测试单元 观察控制器


说明了该静态工厂实例化Bean成功!

3. 使用实例工厂方法实例化
 在PersonServiceBeanFactory中新建
插入以下代码
public PersonServiceBean createPersonServiceBean2(){
        
return new PersonServiceBean();
    }

在beans.xml中插入以下代码
 <bean id="personServiceFactory"  class="cn.itcast.service.impl.PersonServiceBeanFactory"/>
 <bean id="personService3"  factory-bean="personServiceFactory"  factory-method="createPersonServiceBean2"/>


将测试单元SpringTest中的getBean参数改为personService3
执行测试单元 观察输出


说明这种方式也是可以对Bean进行实例化的!

实例化Bean常用的三种方式如上,具体运用何种方式可以根据具体情况,不过大多数情况下使用的还是第一种!
posted on 2009-05-08 15:11 特立独行 阅读(305) 评论(0)  编辑  收藏 所属分类: Spring框架

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


网站导航: