3 实例化bean的方法

三 实例化bean的方法
三 实例化bean的方法 
1接口
package cn.itcast.service;

public interface PersonService {

	/* (non-Javadoc)
	 * @see cn.itcast.service.impl.PersonService#save()
	 */
	public void save();

}
实现类
package cn.itcast.service.impl;

import cn.itcast.service.PersonService;



public class PersonServiceBean implements PersonService {

	/* (non-Javadoc)
	 * @see cn.itcast.service.impl.PersonService#save()
	 */
	/* (non-Javadoc)
	 * @see cn.itcast.service.impl.PersonService#save()
	 */
	public void save(){
		System.out.println("我是save()方法");
	}
}

静态工厂类

package cn.itcast.service.impl;
/**
 * 静态工厂方法实例化bean
 * @author Administrator
 *
 */
public class PersonServiceBeanFactory {
   public static PersonServiceBean create(){
    	return new PersonServiceBean();
    }
}

实例工厂方法实例化
package cn.itcast.service.impl;

public class PersonServiceBeanNotStaticFactory {
   public PersonServiceBean create(){
	   return new PersonServiceBean();
   }
}


请看配置文件配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
           <!-- 一 类构造器实例化 方式 建一个接口 建一个接口的实现类 把接口实现类配置上即可 -->
     <bean id="personservice" class="cn.itcast.service.impl.PersonServiceBean"></bean>
     
     <!-- 静态工厂的实例化 方式同样是建一个接口 建一个接口实现类 同时建一个工厂类 然后把工厂类给配置上 并且配置其创建实例的方法 -->
     <bean id="personservicefactory1" class="cn.itcast.service.impl.PersonServiceBeanFactory" factory-method="create"></bean>
 
     <!-- 实例工厂方法实例化 同样是建一个接口 一个实现类 一个工厂类 不过工厂创建的实例的方法不是静态的 并且把这个方法配置-->
     <bean id="notstaticfactory" class="cn.itcast.service.impl.PersonServiceBeanNotStaticFactory"></bean>
     <bean id="personservicefactory2" factory-bean="notstaticfactory" factory-method="create"></bean>
 </beans>


调用
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("personservice");
	    //personService.save();
		
		/**
		 * 方式二 静态工厂方法实例化
		 */
		//PersonService personService = (PersonService)ctx.getBean("personservicefactory1");
		//personService.save();
		
		
		/**
		 * 方式三 实例工厂方法实例化
		 */
		PersonService personService = (PersonService)ctx.getBean("personservicefactory2");
		personService.save();		
	}
}

好了 就讲到这吧
完毕 end!