三种实例化bean的形式

三种实例化bean的方式
知识点:


1.使用类构造器实例化
<bean id="orderService" class="com.liyong.ServersBean"/>
2.使用静态工厂方法实例化
<bean id="personService" class="com.liyong.BeanFactory" factory-method="createOrder"/>
public class OrderFactory {
public static OrderServiceBean createOrder(){
return new PersonServer(); }
}
3.使用实例工厂方法实例化:
<bean id="personServiceFactory" class="com.liyong.BeanFactory"/>
<bean id="personService" factory-bean="personServiceFactory" factory-method="createOrder2"/>
public class OrderFactory {
public OrderServiceBean createOrder2(){
return new PersonServer();
}
}




照样实现步骤:(搭建环境见上)这里我三个一起测试了

第一步:编写接口

public interface IPersonServer {

public abstract void save();

}

第二步:实现接口

public class PersonServer implements IPersonServer {
public void save()
{
System.out.println("save is OK !");
}
}

第三步:这里使用了工厂让容器创建bean对象

public class BeanFactory {

public static PersonServer createOrder() {
return new PersonServer();
}

public PersonServer createOrder2(){
return new PersonServer();
}
}

第四步:编写beans.xml文件(放在src或lib目录)

<?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">

<!-- id="" 【id:于xmlId进行对应而且不包含特殊字符】,name=""使用特殊字符时使用name 都是用来表示这个bean -->
<!-- 注意:我们把bean 叫 给spring容器进行创建和维护我们只需从中获取bean 无需创建和维护 -->
<bean id="personservice" class="com.liyong.ServersBean.PersonServer"/>
<!-- 使用静态工厂方法实例化 -->
<bean id="personservice2" class="com.liyong.BeanFactory.BeanFactory" factory-method="createOrder"/>
<!-- 使用实例工厂方法实例化:- -->
<bean id="personserviceFactory" class="com.liyong.BeanFactory.BeanFactory"/>
<bean id="personservice3" factory-bean="personserviceFactory" factory-method="createOrder2"/>
</beans>

第五步:编写单元测试

public class JUnitTest {

@Test
public void TestSave()
{
//得到Spring容器实例
ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
//ApplicationContext ctx2 = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});

//这里面向接口
IPersonServer server =(IPersonServer)ctx.getBean("personservice3");
server.save();
}
}

第六步:部署

在代码中:IPersonServer server =(IPersonServer)ctx.getBean("personservice3");

更改:ctx.getBean知识点:ctx.getBean(“id或name”)得到不同方式创建的bean对象




1.使用类构造器实例化
<bean id="orderService" class="com.liyong.ServersBean"/>
2.使用静态工厂方法实例化
<bean id="personService" class="com.liyong.BeanFactory" factory-method="createOrder"/>
public class OrderFactory {
public static OrderServiceBean createOrder(){
return new PersonServer(); }
}
3.使用实例工厂方法实例化:
<bean id="personServiceFactory" class="com.liyong.BeanFactory"/>
<bean id="personService" factory-bean="personServiceFactory" factory-method="createOrder2"/>
public class OrderFactory {
public OrderServiceBean createOrder2(){
return new PersonServer();
}
}




照样实现步骤:(搭建环境见上)这里我三个一起测试了

第一步:编写接口

public interface IPersonServer {

public abstract void save();

}

第二步:实现接口

public class PersonServer implements IPersonServer {
public void save()
{
System.out.println("save is OK !");
}
}

第三步:这里使用了工厂让容器创建bean对象

public class BeanFactory {

public static PersonServer createOrder() {
return new PersonServer();
}

public PersonServer createOrder2(){
return new PersonServer();
}
}

第四步:编写beans.xml文件(放